[英]Handlebars template not respecting view member when set from render helper
我有一個可以單獨填寫的表格,也可以作為更大對象的一部分嵌入到另一個表格中。 當我{{render}}
來自包含的車把模板的表單時,子模板不尊重視圖上的可觀察對象。
父模板:
{{render "EditIntro" introModule embedded=true}}
其中introModule是容器模型上的一個屬性,該屬性返回該intro的特定子模型,該子模型是父級的一部分。
子視圖:
App.EditIntroView = Ember.View.extend({
embedded: false,
isEmbedded: function() {
return !!this.get('embedded');
}.property('embedded'),
templateName: 'intros/edit_intro',
// etc.
子模板(相關部分):
{{! If this form is embedded, user must use the save button for the parent }}
{{#unless isEmbedded}}
<button type="submit" class="btn btn-success">
<span class="glyphicon glyphicon-save"></span> Save
</button>
{{/unless}}
我可以在Ember Inspector Chrome插件中看到該屬性,該屬性顯示為boolean true
。 我可以在isEmbedded
函數上設置一個斷點,並看到子模板渲染時不會調用它,但是當我打開Ember Inspector或使用Inspector手動更改值時,它確實會被調用。 最后,如果我在EditIntroView
中將默認值設置為embedded: true
,則該按鈕將像我期望的那樣被隱藏。
那么,如何才能使子視圖尊重通過另一個模板的{{render}}
調用設置的簡單參數?
模板顯然沒有僅在視圖中作為其上下文的一部分定義的屬性。 由於isEmbedded
屬性僅在視圖上,而不在模型或控制器上,因此需要在view.
。 因此,工作代碼修復很簡單:
{{#unless view.isEmbedded}}
就是這樣。
在這個關於類視圖與實例視圖的Ember問題中找到了答案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.