1

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

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

<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/)。任何意见,将不胜感激。谢谢

4

2 回答 2

1

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

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

<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>

在这里看到你修改和工作的 jsfiddle

希望能帮助到你。

于 2013-10-13T09:22:36.910 回答
0

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

于 2013-10-13T06:05:39.270 回答