用于渲染模板的ember控制器

时间:2013-10-13 05:09:57

标签: ember.js

我有一组foos,每个foo都有自己的酒吧系列。我希望能够使用路线显示选定的foo,但是foo的条形被列为显示的一部分。

所有这一切都是直截了当的,除了每个栏可能包含一个属性,这意味着我想对它应用不同的样式。所以,我在每个中使用 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/)。任何意见,将不胜感激。感谢

2 个答案:

答案 0 :(得分:1)

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

请在此处查看modified and working jsfiddle

希望它有所帮助。

答案 1 :(得分:0)

没有什么可以像控制者或动作一样在控制器中触发你的事件。