我想从 App.ready 中设置 ApplicationController 的属性。但我看不出如何从这个函数中完成
App.ready = function() {
this.controller.set("isLoaded", true) ;
}
这样的事情可能吗?
干杯
我想从 App.ready 中设置 ApplicationController 的属性。但我看不出如何从这个函数中完成
App.ready = function() {
this.controller.set("isLoaded", true) ;
}
这样的事情可能吗?
干杯
如果对象没有直接链接(Router > Controller > View),那么直接设置控制器值是不可能的,但我也会质疑为什么你希望从 ready 事件中在 ApplicationController 中设置一些东西。您可以采取两种选择。您可以创建一个新的 Ember 对象并从那里的 ready 事件中设置一个值,并让控制器观察该属性(此处为示例。第二个选项是响应 ApplicationView 上的“didInsertElement”事件(此处为示例)
选项1:
App = Em.Application.create({
ready: function () {
App.SomeObject.set('someValue', 'A value');
alert('ready event fired');
}
});
App.SomeObject = Em.Object.create({
someValue: '1'
});
App.ApplicationController = Em.Controller.extend({
someFunction: function () {
// do something here (note that the original value of 1 for someValue is never set as the application
// overwrites it immediately
}.observes('App.SomeObject.someValue')
});
App.ApplicationView = Em.View.extend({
didInsertElement : function () {
alert('view has been inserted into the dom');
alert(App.SomeObject.get('someValue'));
}
});
选项 2:
window.App = Em.Application.create({
ready: function () {
alert('app is ready');
}
});
App.ApplicationController = Em.Controller.extend();
App.ApplicationView = Em.View.extend({
didInsertElement : function () {
alert('view has been inserted into the dom');
}
});
编辑:请注意,我很确定选项 1 很混乱,并且会被 Ember 开发人员不赞成(尽管我不能肯定地说)。