簡體   English   中英

使用ember和ember-cli編輯車把模板

[英]Editing Handlebars templates with ember and ember-cli

嗨,我的問題可能很簡單,因為我是ember和ember-cli的新手,據我了解,您只需編輯包含html,IE的應用程序HBS模板。 應用程序/模板/ settings.hbs

但是我的問題是,當我編輯其中一個文件並重新啟動整個堆棧時,沒有反映出任何更改-此外,我基本上只是試圖通過輸入if條件來查找已創建的堆棧,以對控制器名稱進行一些小的更改並顯示內容,如果它符合我的尋找,

例如

{{#if controller.name == "settings"}}
// diff lis
{else}
// normal lis
{#endif}

在這里最重要的是,我對HBS模板所做的任何更改似乎都沒有實時反映出來,知道為什么嗎?

除了@Oren答案之外,如果您使用的是ember 1.10,則可以利用handlebars子表達式並編寫自己的eq助手,該助手可以在更多情況下使用。 例如:

Ember.Handlebars.registerBoundHelper('eq', function(left, right) {
  return left === right;
});

然后在您的模板中

{{#if (eq name "settings") }}
  // diff lis
{{else}}
  // normal lis
{{/if}}
// ...
{{#if (eq something otherstuff) }}
  // show this
{{else}}
  // show that
{{/if}}

實時示例http://emberjs.jsbin.com/mezoxiqavi/1/edit

車把沒有您發布的形式的平等幫助器。 (請參閱此列表以獲取所有內置助手的列表。)

相反,使代碼工作所需要做的是在控制器上創建一個屬性:

IsNameSettings: function(){
    return this.get('model.name') === 'settings';
}.property('model.name');

並更改模板以使用此屬性(請注意,您還擁有{{/endif}} ,需要將其更改為{{/if}} [請參見上面的鏈接]):

{{#if controller.IsNameSettings}}
// diff lis
{else}
// normal lis
{/if}

在等待實時重新加載時,查看是否在按照我描述的那樣將車把模板更改為有效語法后,是否在頁面實時更新中顯示結果。 確認保存這些更改之后,您會看到ember-cli輸出指示構建成功。 根據以下內容檢查終端中的輸出:

version: 0.1.12
Livereload server on port 35729
Serving on http://0.0.0.0:4200/

Build successful - 8891ms.

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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