我有一个路线,控制器,这样的视图。问题是我从视图中调用了控制器函数reloadTime
但在reloadTime
函数中我控制了该控制器的内容,但它说它是undefined
。我的问题是如何在ember中访问这些内容?
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();
}
});
答案 0 :(得分:3)
您正在正确访问content
媒体资源。您获得undefined
的原因是因为content
属性实际上未定义。
现在你的content
未定义的原因是因为Ember.js会自动将控制器的内容设置为路径中model
挂钩的返回值。
由于您没有定义model
方法,如果此挂钩为undefined
,则返回值,因此Ember.js将控制器content
属性设置为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);
}
});
},
model: function() {
return [];
}
});