问题描述
您好,我正在尝试使用余烬向数组添加对象。 friends控制器模型返回一个对象数组(App.friends)。
从friends / new模板中,我获得了用户firstName,lastName及其相关信息。
一旦我知道用户单击了create,然后通过使用ember的需求功能从FriendsNewController内部访问App.friends来将信息添加到App.friends。
由于某种原因,我单击创建时收到以下错误,
未捕获的TypeError:desc.get不是函数
App.FriendsRoute = Ember.Route.extend({
model: function(){
return App.friends;
}
});
App.FriendsNewController = Ember.Controller.extend({
needs: "friends",
isInvalid: true,
validForm: function(){
if(this.get('lastName') && this.get('firstName')){
this.set("isInvalid", false);
} else {
this.set("isInvalid", true);
}
}.observes('firstName','lastName'),
actions: {
create: function(){
var newFriend = Ember.copy(this.content);
this.get('controllers.friends.model').addObject(newFriend);
this.transitionToRoute('friends');
}
}
});
<script type="text/x-handlebars" id="friends/new">
<label>First Name</label>
{{input value=firstName}}<br />
<label>Last Name</label>
{{input value=lastName}}<br />
<label>About</label>
{{textarea value=about}}<br />
<button {{action "create"}} {{bind-attr disabled=isInvalid}}>Create</button>
</script>
App.friends = [
{id: 1, firstName: "John", lastName: "Joe", about: "Funny"},
{id: 2, firstName: "Mary", lastName: "Joey", about: "Smart"},
{id: 3, firstName: "Henry", lastName: "Jim", about: "Kind"}
];
我对Ember极为陌生,请随时将我推向正确的方向。 谢谢 :)
1楼
看来您在正确的轨道上。
在下面的行中,您尝试将对象添加到控制器:
this.get('controllers.friends').addObject(newFriend);
但应将其添加到数组中:
this.get('controllers.friends.model').addObject(newFriend);
什么是App.friends
?
为了使addObject
正常工作,它应该是一个Ember数组(而不是普通数组,即[1,2]
与Ember.A([1,2])
)