Ember应用程序就绪状态 - 应用程序无法识别方法。

时间:2013-10-14 17:21:31

标签: javascript ember.js ember-data

我目前正致力于使用ember-data和rails作为API的ember应用程序的通知系统。我下面的当前设置是尝试在通知控制器上调用方法'refresh()',以设置的间隔来获取通知,但是无法识别该方法。

这是application.js文件:

//= require jquery
//= require jquery_ujs
// require jquery.ui.all
//= require handlebars
//= require ember
//= require ember-data
//= require ember-auth
//= require_self
//= require auth
//= require company_backend
//= require ./wepay
//= require_tree .
//= stub polyfills/aight.js
//= stub polyfills/aight.d3.js
//= stub polyfills/mediaqueries.js
//= stub polyfills/pointerevents.js
//= stub polyfills/svg.js

window.CompanyBackend = Em.Application.create({
    ready: function() {
        setInterval(CompanyBackend.BusinessNotifications.refresh(), 2000);
    },
});

这是BusinessNotifications控制器:

CompanyBackend.BusinessNotifications = Em.ArrayController.extend({
    refresh: function() {
        alert('in refresh');
    },
});

是否有一个特定的原因我会得到一个没有方法'刷新'的错误?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

未调用refresh方法的原因是因为没有任何实例化BusinessNotifications控制器。

你可以试试这个让它变得艰难:

CompanyBackend.businessNotifications = Em.ArrayController.create({
  refresh: function() {
    alert('in refresh');
  },
});

window.CompanyBackend = Em.Application.create({
  ready: function() {
    setInterval(CompanyBackend.businessNotifications.refresh(), 2000);
  }
});

变化很小但很重要,您需要自己使用.create而不是.extend来创建控制器的实例,并且还要注意小写的名称,因为这按照惯例表示实例而不是一个班级。

希望它有所帮助。