使用ember和ember-cli编辑Handlebars模板

时间:2015-02-11 09:11:56

标签: node.js ember.js sails.js ember-cli

嘿所以我的问题可能很简单,因为我是ember和ember-cli的新手,根据我的理解你只需编辑一个包含html,IE的应用程序HBS模板。 应用程序/模板/ settings.hbs

然而我的问题是,当我编辑其中一个文件并重新启动整个堆栈时,没有反映出任何变化 - 此外我基本上只是尝试通过输入if条件来创建对已创建堆栈的一些小改动找到控制器名称并显示内容(如果它与我正在寻找的内容相匹配)

例如

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

最重要的是,我对HBS模板所做的任何改变似乎都没有现场反映,任何想法为什么?

2 个答案:

答案 0 :(得分:1)

除了@Oren的回答,如果你使用的是ember 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

答案 1 :(得分:0)

Handlebars在您发布的表单中没有相等帮助器。 (有关所有内置帮助程序的列表,请参阅this list。)

相反,您需要做的就是让代码工作是在控制器上创建一个属性:

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.