簡體   English   中英

從渲染助手中設置后,把手模板不尊重視圖成員

[英]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>&nbsp;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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM