我的 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定义这些属性。

08-15 17:22