使用控制器模型

时间:2015-08-08 03:57:03

标签: javascript arrays ember.js

您好我试图使用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非常陌生,所以请随意向我推进正确的方向。谢谢:))

1 个答案:

答案 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])