2013-04-21 74 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