2015-02-11 64 views
1

嘿所以我的问题可能很简单,因为我是全新的ember和ember-cli,从我的理解中,您只需编辑包含html,IE的应用程序HBS模板。 app/templates/settings.hbs编辑带有余烬和余烬的handlebars模板

然而,我的问题是,当我编辑这些文件中的一个,并重新启动整个堆栈,没有任何变化反映 - 此外我基本上只是试图创建一些已经很小的变化已经通过输入如果有条件找到控制器名称和显示内容是否匹配什么即时寻找创建堆栈,

例如

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

最重要的这里,任何改变我让所有的HBS模板似乎没有被反映出来,任何想法为什么?

回答

0

把手没有以您发布的形式存在平等帮手。 (所有的内置的助手的列表,请参阅this list。)

相反,你需要做的,使你的代码的工作是你的控制器上创建一个属性是什么:

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

,改变你的模板使用此属性(请注意,你也有{{/endif}}需要被改为{{/if}} [见上面的链接):

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

看能否改变你的车把模板有效语法,我描述了我的结果后, n当您正在等待现场重新加载时,页面实时更新。确认保存这些更改后,您会看到来自ember-cli的输出表明构建成功。检查输出线沿线的终端:

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

Build successful - 8891ms. 
1

除了@Oren答案,如果你使用的余烬1.10你可以把车把子表达式的优势,写自己的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