我的 Controller 中有以下道具
App.TeamController = Ember.ObjectController.extend(
involvedProjectTeams: (->
return @get("content.projectTeams").filter (projectTeam, index, enumerable) ->
projectTeam.get("sdeScopingWeeks") isnt 0
).property("[email protected]")
notInvolvedProjectTeams: (->
return @get("content.projectTeams").filter (projectTeam, index, enumerable) ->
return projectTeam.get("sdeScopingWeeks") is 0
).observes("[email protected]")
)
然后,我遍历基础模板中涉及的ProjectTeam和notInvolvedProjectTeam。我收到以下错误:
Uncaught TypeError: Object function () {
return this.get("content.projectTeams").filter(function(projectTeam, index, enumerable) {
return projectTeam.get("sdeScopingWeeks") === 0;
});
} has no method 'addArrayObserver'
为什么property()会按预期工作,但会观察到抛出错误?
谢谢!!
最佳答案
从Ember的指南
因此,如果要访问模板中的某些内容,则应为属性。
观察者将仅返回该函数,因此无法在模板中对其进行访问。这就是为什么访问notInvolvedProjectTeams
时出错的原因,ojit_code只是一个函数而不是属性。
还将其定义为计算属性,以便您可以在模板中访问它们。
附注:您可以使用 Ember 的reduceComputed定义这些属性。