【问题标题】:Editing Handlebars templates with ember and ember-cli使用 ember 和 ember-cli 编辑 Handlebars 模板
【发布时间】:2015-02-11 09:11:55
【问题描述】:

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

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

例如

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

最重要的是,我对 HBS 模板所做的任何更改似乎都不会实时反映,知道为什么吗?

【问题讨论】:

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


    【解决方案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

    【讨论】:

      【解决方案2】:

      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.
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-02-10
        • 1970-01-01
        • 2016-07-20
        • 2016-04-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多