【问题标题】:ember controller for rendered template用于渲染模板的 ember 控制器
【发布时间】:2013-10-13 05:09:56
【问题描述】:

我有一个 foo 集合,每个 foo 都有自己的 bar 集合。我希望能够使用路由显示选定的 foo,但随后 foo 的条被列为显示的一部分。

除了每个条可能包含一个属性,这意味着我想对其应用不同的样式之外,所有这些都是直截了当的。所以,我在 each 中使用 render 车把助手,就像这样 -

<script type="text/x-handlebars" id="foo">
    <div>{{name}}</div>
    <div>
        <table>
            {{#each bar in bars}}
                {{render bar bar}}
            {{/each}}
        </table>
    </div>
</script>

并且栏模板看起来像这样 -

<script type="text/x-handlebars" data-template-name="bar">
    <tr><td>
        <div {{bind-attr class="bar.bold:bold"}}>{{bar.name}}</div>
    </td></tr>
</script>

问题是我不知道如何定义控制器。如果模型包含带有粗体属性的条形,则上述方法有效,但如果不是这种情况,我需要计算属性怎么办?

我尝试了这方面的变化 -

App.BarController = Ember.ObjectController.extend({
isBold: function(){
    return this.get('bold');
}.property('isBold'),});

(相应地修改 bind-attr 助手),我在返回处设置了一个断点。它永远不会被击中。

我在这里有一个 jsfiddle (http://jsfiddle.net/martinp999/ZbjH9/7/)。任何意见,将不胜感激。谢谢

【问题讨论】:

    标签: ember.js


    【解决方案1】:

    使用itemController 在每个项目的基础上保持状态是正确的方法。

    但要让您的 BarController 被拾取和使用,因此您的计算属性被调用,您必须在您的 {{each}} 助手上设置 itemController 属性才能这样做:

    <script type="text/x-handlebars" id="foo">
      <div>{{name}}</div>
      <div>
        <table>
            {{#each bar in bars itemController="bar"}}
                {{render bar bar}}
            {{/each}}
        </table>
      </div>
    </script>
    

    在这里查看您的modified and working jsfiddle

    希望对你有帮助。

    【讨论】:

    • 我就是这么想的。不知道我必须在每个助手上声明它。谢谢
    【解决方案2】:

    没有什么可以像观察者或动作那样触发控制器中的事件。

    【讨论】:

    • 抱歉,ember 新手。你在说什么活动?我想根据数据中的属性显示具有不同样式的条形图。没有活动?
    • jsfiddle.net/erhard/ZbjH9/8 用 if 解决。无需控制器操作。这是你想要的吗?
    • 嗯,这就是我想要的。它将逻辑从控制器移动到车把助手。但是,如果为真,我实际上想使用一个类,否则另一个类。您应该能够通过 {{bind-attr class="view.someBool:class-name-if-true:class-name-if-false"}} 和控制器中返回布尔值的自定义属性的组合来执行此操作。
    • 我认为您必须创建自己的视图助手 - 在那里描述 emberjs.com/guides/views/customizing-a-views-element
    • 不确定我是否理解视图。我名单上的下一件事......我想。 ;-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-27
    • 2014-05-23
    • 1970-01-01
    • 2016-07-13
    相关资源
    最近更新 更多