您好我试图使用ember将对象添加到数组中。 friends控制器模型返回一个对象数组(App.friends)。
在friends / new模板中,我得到一个用户firstName,lastName和about。
一旦我知道用户点击了创建,并且通过使用ember的needs功能从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非常陌生,所以请随意向我推进正确的方向。谢谢:))
答案 0 :(得分:0)
看起来你走在正确的轨道上。
在以下行中,您尝试将对象添加到控制器:
this.get('controllers.friends').addObject(newFriend);
但它应该添加到数组中:
this.get('controllers.friends.model').addObject(newFriend);
什么是App.friends
?要使addObject
工作,它应该是一个Ember数组(不是普通数组,即[1,2]
vs Ember.A([1,2])
)