簡體   English   中英

了解Ember.JS把手#view幫助器中的選項

[英]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}}

從中我可以看到:

  1. Ember將遍歷關聯控制器的mylist list屬性中的對象。
  2. 對於訪問的每個項目(此處稱為myitem ),它將呈現其name屬性,后跟一個換行符
  3. 每個項目都將使用名為App.LoadingView的Ember View App.LoadingView 這是因為Ember自動將#view幫助器的第一個參數(在本例中為"loading"映射到視圖構造函數的標識符。

我在車把文檔的幫助下完成了這項工作。 但是,我對#view helper的第二個參數感到困惑,它們是story=myitem 文件說:

{{view}}Ember.View的新實例插入模板,並將其選項傳遞給Ember.Viewcreate方法,並使用提供的塊作為視圖自己的模板。

所以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.

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