2013-04-05 27 views
2

當我通過needs API訪問控制器的內容時​​,如何訪問itemController的屬性?如何通過Ember.js中的needs API訪問itemController中的屬性

App.PostsIndexController = Ember.ArrayController.extend 
    itemController: 'post' 
    someAction: -> console.log("i'm melting!") 

App.PostController = Ember.ObjectController.extend 
    someComputedProperty: (-> true).property() 

App.IndexController = Ember.Controller.extend 
    needs: ['postsIndex'] 
<script type="text/x-handlebars" data-template-name="index"> 
    {{#each post in controllers.postsIndex.content}} 
    {{someComputedProperty}} 
    <a {{action someAction target="postsIndex"}}>click</a> 
    {{/each}} 
</script> 

我在index模板嘗試{{controllers.postsIndex.someComputedProperty}}{{someComputedProperty}}

+0

你試過'{在控制器{#each後itemController = 「POST」}} {{someComputedProperty}} {{/每}}'? – MilkyWayJoe 2013-04-05 21:51:25

+0

我試過了,但似乎someComputedProperty更新時不更新,雖然它可以在頁面加載時正確計算。此外,內聯添加'itemController'會打斷'someAction'(該部分更新的問題) – mehulkar 2013-04-05 22:00:44

+0

不應該將目標設置爲'controller'? – MilkyWayJoe 2013-04-05 22:05:22

回答

5

當我通過needs API訪問控制器的內容時​​,如何訪問itemController的屬性?

首先,你應該傳遞的controllers.postsIndex.contentcontrollers.postsIndex{{each}}助手代替。否則,{{each}}幫助程序將循環播放模型對象,而不會通過PostsIndexController。所以像@MilkyWayJoe建議,你可以試試:

<script type="text/x-handlebars" data-template-name="index"> 
    {{#each post in controllers.postsIndex}} 
    {{someComputedProperty}} 
    <a {{action someAction target="postsIndex"}}>click</a> 
    {{/each}} 
</script> 

我試過了,但似乎雖然它正確地計算在頁面加載someComputedProperty不會當它改變時更新。

灰燼計算,除非你指定依賴列表的屬性不更新:

App.PostController = Ember.ObjectController.extend 
    someComputedProperty: (-> true).property('title', 'someotherproperty', 'etc') 
+0

我會接受你的答案,因爲上半場是正確的。圍繞內容循環是我的問題。設定行動的目標也有效。我感到困惑的部分是'{{someComputedProperty}}'怎麼知道訪問itemController,但是在'IndexController'中將'post'添加到needs數組是最後一件事。謝謝! – mehulkar 2013-04-06 23:08:30

相關問題