Javascript 余烬数据模型数组不';我不总是有数据
第一次建立一个余烬应用程序,我有困难与我的模型没有解决 我有一组课程模型,每个模型都有一组用户模型(hasMany,with async:true) 当我加载页面时,我看到所有API请求都是正确的(即客户端正在为阵列中的所有用户发出请求),当我记录课程模型时(即当我记录Javascript 余烬数据模型数组不';我不总是有数据,javascript,arrays,ember.js,ember-data,Javascript,Arrays,Ember.js,Ember Data,第一次建立一个余烬应用程序,我有困难与我的模型没有解决 我有一组课程模型,每个模型都有一组用户模型(hasMany,with async:true) 当我加载页面时,我看到所有API请求都是正确的(即客户端正在为阵列中的所有用户发出请求),当我记录课程模型时(即当我记录console.log(course)),我看到控制台中的数据。但是,当我执行类似于course.get('admins')的操作时,数组是空的 课程不是需要所有这些信息的控制器的模型(这可能是发生这种情况的原因吗?),因此我将“
console.log(course)
),我看到控制台中的数据。但是,当我执行类似于course.get('admins')
的操作时,数组是空的
课程不是需要所有这些信息的控制器的模型(这可能是发生这种情况的原因吗?),因此我将“课程”控制器放在needs
数组中
最后是这样的:
var course = this.get('controllers.course').get('model'); // this is OK, has data
var admins = course.get('admins'); // this is not OK, has no data!
var CourseModel = DS.Model.extend({
admins: DS.hasMany('user', {
async: true
})
});
即使我尝试了以下方法:
course.get('admins').then(function (admins) {
console.log(admins);
});
还是没有数据!我做错了什么
以下是更多相关代码:
var VideoDiscussionController = Ember.Controller.extend({
needs: ['course'],
submitComment: function () {
var user = this.get('session').get('currentUser'),
admins = this.get('controllers.course').get('model').get('admins'), // this is empty!
isAdmin = admins.isAny('id', user.get('id'));
var video = this.get('model'),
text = this.get('commentText'),
seconds = this.player.getCurrentTime() : 0,
comment = this.store.createRecord('comment', {
video: video,
text: text,
seconds: seconds,
author: user,
isAdmin: isAdmin
});
// POST comment
comment.save();
// Clear textbox
this.set('commentText', '');
video.get('comments').pushObject(comment);
}
});
我假设您的模型是这样的:
var course = this.get('controllers.course').get('model'); // this is OK, has data
var admins = course.get('admins'); // this is not OK, has no data!
var CourseModel = DS.Model.extend({
admins: DS.hasMany('user', {
async: true
})
});
然后,如果您获得了课程模型实例,并且您获得了:
course.get('admins')
该行将触发询问用户的AJAX调用
您是否检查过是否调用了此类请求
如果没有,您能否提供更多的代码以便我们可以帮助您?加载加载所有课程的页面时,会触发AJAX调用(即,我看到对/api/users/:userId的GET请求)。我会用更多的代码更新我原来的帖子
course.get('admins')
返回承诺,因此您必须将其与一起使用。然后(function(admins){})
可能是响应/序列化程序的错误?您能否复制从服务器获得的json+序列化程序代码(如果有)?