如何通过Ember.js中的needs API访问itemController中的属性

meh*_*kar 2 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']
Run Code Online (Sandbox Code Playgroud)
<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>
Run Code Online (Sandbox Code Playgroud)

我试过{{controllers.postsIndex.someComputedProperty}}{{someComputedProperty}}index模板中.

Mik*_*tti 5

当我通过needs API访问控制器的内容时​​,如何访问itemController的属性?

首先你应该把它传递controllers.postsIndex{{each}}助手而不是controllers.postsIndex.content.否则,{{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>
Run Code Online (Sandbox Code Playgroud)

我尝试过,但似乎someComputedProperty在更改时不会更新,尽管它在页面加载时正确计算.

除非您指定依赖项列表,否则Ember计算属性不会更新:

App.PostController = Ember.ObjectController.extend
  someComputedProperty: (-> true ).property('title', 'someotherproperty', 'etc')
Run Code Online (Sandbox Code Playgroud)