您好 emberjs 专家 :)
有一点我不明白。
给定以下路线:
Evibe.MemberShowRoute = Ember.Route.extend({
model: function(params) {
return Ember.$.getJSON('/api/user').then(function(user) {
return Ember.Object.create(user);
});
}
});
对 api 的调用只返回一个包含属性的用户对象。此属性之一是图片对象数组。像那样:
{
username: "A nice user",
pictures: [
{id: 1, is_main: true, url: 'http://www.test.com/img1.jpg'},
{id: 2, is_main: false, url: 'http://www.test.com/img2.jpg'},
{id: 3, is_main: false, url: 'http://www.test.com/img3.jpg'},
{id: 4, is_main: false, url: 'http://www.test.com/img4.jpg'},
]
}
在我的控制器中,我有这样的东西:
Evibe.MemberShowController = Ember.ObjectController.extend({
nb_pictures: function() {
return this.pictures.length;
}.property('pictures'),
addPictureObject: function(picture) {
this.get('pictures').addObject(picture);
}
});
在我的模板中,我有这样的东西:
{{ nb_pictures }} pictures
我不明白为什么 nb_pictures 没有更新,因为我正在使用 addPictureObject 函数将对象添加到我的“图片”属性中。
另外,当我尝试做这样的事情时:
this.get('pictures').setEach('is_main', false); // Works
this.get('pictures').findBy('id', pictureId).is_main = true; // Doesn't work
this.get('pictures').findBy('id', pictureId).set('is_main', true) // Doesn't work
第一行按预期工作。
但是...对于第二行,我收到错误消息:“断言失败:您必须使用 Ember.set() 来访问此属性([object Object])”
对于第三个,我收到错误消息:“未捕获的 TypeError:Object # has no method 'set'”
任何可以帮助澄清这一点的想法将不胜感激。