[英]Understanding the options in a handlebars #view helper for Ember.JS
這適用於Ember.JS 1.11版
我剛剛開始學習Ember,並承擔了維護現有項目的任務。 我可以在許多車把文件中看到如下所示的代碼:
{{#each myitem in controller.mylist}}
{{#view "loading" story=myitem}}
{{myitem.name}}<br>
{{/view}}
{{/each}}
從中我可以看到:
mylist
list屬性中的對象。 myitem
),它將呈現其name
屬性,后跟一個換行符 App.LoadingView
的Ember View App.LoadingView
。 這是因為Ember自動將#view
幫助器的第一個參數(在本例中為"loading"
映射到視圖構造函數的標識符。 我在車把文檔的幫助下完成了這項工作。 但是,我對#view
helper的第二個參數感到困惑,它們是story=myitem
。 該文件說:
{{view}}
將Ember.View
的新實例插入模板,並將其選項傳遞給Ember.View
的create
方法,並使用提供的塊作為視圖自己的模板。
所以story=myitem
似乎是傳遞給視圖控制器的“選項”,在我的代碼中看起來像這樣:
App.LoadingView = Ember.View.extend({
didInsertElement: function() {
this.$().parents().children(".loading").fadeOut(1500);
this.$().hide().delay(600).fadeIn(500);
}
});
我看不到此構造函數中對story
任何引用,而且它似乎不是標准的#view
選項。
我還在項目中對“故事”進行了全局文本搜索,並且它出現的唯一位置是在車把文件中。
那么它在哪里使用呢?
App.LoadingView
是一個類,而不是一個實例。 當Ember需要創建它的實例時,它將在該實例上調用create並傳入參數。
在您的情況下,與模板相對應的代碼如下所示:
var j = App.LoadingView.create({
story: myItem
});
story
最終將成為僅存在於加載視圖實例上的屬性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.