访问控制器功能内嵌的内容
问题描述:
我有一个像这样的路由,控制器,视图。问题是我从视图中调用了控制器功能reloadTime
,但是在reloadTime
函数中,我控制此控制器的内容,但它说它是undefined
。我的问题是如何访问这个内容在烬?访问控制器功能内嵌的内容
App.ActivecallsRoute = Ember.Route.extend({
setupController:function(controller,model){
$.ajax({
url:'requests/activecalls.php',
type:'POST',
success:function(data){
App.Cdrglobal.set('active_call',data.length);
controller.set('content',data);
}
})
}
});
App.ActivecallsController = Ember.ArrayController.extend({
content:[],
deleteCall:function(model){
var obj = this.findProperty('ID',model.ID);
App.Cdrglobal.set('active_call',App.Cdrglobal.active_call-1);
this.removeObject(obj);
},
reloadTime:function(){
console.log(this.get('content'));//console undefined
console.log(this.content);console undefined
}
});
App.ActivecallsView = Ember.View.extend({
didInsertElement:function(){
this.get('controller').reloadTime();
}
});
答
您正在访问content
属性。您得到undefined
的原因是因为content
属性实际上是未定义的。
现在你的content
未定义的原因是因为Ember.js自动将控制器的内容设置为路由中model
钩子的返回值。
因为你,如果这个钩子是undefined
,因此Ember.js在控制器content
属性设置为undefined
没有定义model
方法的返回值。
解决方案:
创建仅返回一个空的阵列的假人模型钩:
App.ActivecallsRoute = Ember.Route.extend({
setupController:function(controller,model){
$.ajax({
url:'requests/activecalls.php',
type:'POST',
success:function(data){
App.Cdrglobal.set('active_call',data.length);
controller.set('content',data);
}
});
},
model: function() {
return [];
}
});