gpt4 book ai didi

angularjs - Emberjs 服务类似功能(如 Angular )?

转载 作者:行者123 更新时间:2023-12-02 22:54:18 26 4
gpt4 key购买 nike

假设我有一个函数,每 10 秒与我的服务器对话一次,并且如果服务器告诉它,它就会执行一些操作(例如更新我的模型)。

在 Angular 中,我可以创建一个服务,该服务将定期执行某些操作,同时仍然能够访问我的 $scope(或 $rootScope),我将如何做这样的事情在 Ember 中?我如何创建一个在后台运行并与我的 ember 应用程序集成的函数?

我尝试在 ember 文档中搜索类似于 Angular 服务的内容,但到目前为止我在这条路线上没有运气:(

提前致谢:)

最佳答案

在应用程序路由中构建一个 Controller ,它本质上就成为一个全局 Controller ,您可以从所有路由/ Controller 访问。

在应用程序路由启动阶段构建

App.ApplicationRoute = Ember.Route.extend({
beforeModel: function(){
// eagerly create the service controller instance, aka start the service
var service = this.controllerFor('service');
}
});

App.ServiceController = Em.Controller.extend({
init: function(){
this._super();

this.startFooConsole();
},
startFooConsole: function(){
Em.run.later(this, this.startFooConsole, 1000);
console.log('hello world');
},
helloWorld: function(){
console.log('hello world function');
}
});

从路线访问

this.controllerFor('service').helloWorld();

从 Controller 访问

App.FooController = Em.Controller.extend({
needs:['service'],
someMethod: function(){
this.get('controllers.service').helloWorld();
}
})

http://emberjs.jsbin.com/bukuvuho/1/edit

使用容器构建(Ember 的依赖注入(inject))

使用容器,您可以急切地创建一个实例并将其附加到所有 Controller ,但它不应该再是一个 Controller (否则它会创建一个循环引用)。

App.Service = Em.Object.extend({
init: function(){
this._super();

this.startFooConsole();
},
startFooConsole: function(){
Em.run.later(this, this.startFooConsole, 1000);
console.log('hello world');
},
helloWorld: function(){
console.log('hello world function');
}
});

App.initializer({
name: "service",
initialize: function (container, application) {
// eagerly create the service and add it to the controllers/routes
var service = application.Service.create();

application.register("my:service", service, {instantiate:false});
application.inject("controller", "service", "my:service");
application.inject("route", "service", "my:service");
// you also could put it in the app namespace
application.service = service;
}
});

http://emberjs.jsbin.com/bukuvuho/2/edit

关于angularjs - Emberjs 服务类似功能(如 Angular )?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23913843/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com