当前位置: 代码迷 >> JavaScript >> 使用控制器模型将对象添加到数组
  详细解决方案

使用控制器模型将对象添加到数组

热度:98   发布时间:2023-06-07 15:52:28.0

您好,我正在尝试使用余烬向数组添加对象。 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极为陌生,请随时将我推向正确的方向。 谢谢 :)

看来您在正确的轨道上。

在下面的行中,您尝试将对象添加到控制器:

this.get('controllers.friends').addObject(newFriend);

但应将其添加到数组中:

this.get('controllers.friends.model').addObject(newFriend);

什么是App.friends 为了使addObject正常工作,它应该是一个Ember数组(而不是普通数组,即[1,2]Ember.A([1,2])

  相关解决方案