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

Ember Application Ready state - Application not recognizing method.

本文关键字:应用程序 识别 方法 就绪状态 Ember      更新时间:2023-09-26

我目前正在为一个使用ember数据和rails作为API的ember应用程序开发通知系统。我在下面的当前设置是尝试在通知控制器上调用方法"refresh()",以设定的时间间隔获取通知,但是该方法无法识别。

这是应用程序.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);
    },
});

下面是业务通知控制器:

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

是否有特定原因会导致我收到没有方法的"刷新"错误?

感谢您的帮助!

未调用 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 创建控制器的实例,并且还要注意小写名称,因为这按照惯例指示实例而不是类。

希望对您有所帮助。