2013-04-21 76 views
0

我想触发父视图中子控件的ArrayController操作。我会怎么做呢?如何访问hasMany的子控制器

具体而言,我试图添加一个新的子元素hasMany关系。它在子元素的视图中使用{{action new}}正常工作,但我不确定如何从父视图执行此操作。

<script type="text/x-handlebars" data-template-name="parents"> 
    <b>List</b><br /> 
    {{#each parent in controller}} 
     {{ parent.name }} <br />  
     {{ render "kids" parent.children }} 
    <a href="#" {{ action parent.children.new target="controller" }}>Parent View Make Kid</a<br/> 
    <br /> 
    {{/each}} 
</script> 

<script type="text/x-handlebars" data-template-name="kids"> 
    {{#each kid in controller}} 
     > {{ kid.name }} <br /> 
    {{/each}} 
    <a href="#" {{ action new }}> Kid Controller Make Kid</a><br /> 
</script> 

在上面的“Kid Controller Make Kid”工作正常,“Parent Controller Make Kid”没有。

请找一个小提琴说明问题就在这里:http://jsfiddle.net/chopper/zHnQC/2/

谢谢!

回答

2

从父母的角度来看,你不能直接访问孩子的控制器。我认为最好的选择是在ParentsController上实施newKid方法,负责在其模型上创建新记录。

我已经分叉的小提琴和实施工作的例子:http://jsfiddle.net/pxkys/1/

希望这有助于!

+0

哇,这简直太惊人了。非常感谢! – chopper 2013-04-21 16:46:02

+0

不客气,很高兴帮助!是的,Ember有时似乎很复杂,但大部分时间都有一个简单而优雅的解决方案直视你的脸;) – danii 2013-04-21 18:44:50