Ember.js 未从arraycontroller更新成员模板

Ember.js 未从arraycontroller更新成员模板,ember.js,ember-data,handlebars.js,Ember.js,Ember Data,Handlebars.js,在我的应用程序中,用户可以输入朋友的描述,也可以对已经存在的描述进行投票。这两种方法(createDescription和upvotedDescription)都保存在数据库中。UpVotedDescription更改DOM,但createDescription不更改。这可能是因为我在模型中传递一个参数,但我无法回避这一点——api需要它 //descriptions route App.DescriptionsRoute = Ember.Route.extend({ ... mode

在我的应用程序中,用户可以输入朋友的描述,也可以对已经存在的描述进行投票。这两种方法(createDescription和upvotedDescription)都保存在数据库中。UpVotedDescription更改DOM,但createDescription不更改。这可能是因为我在模型中传递一个参数,但我无法回避这一点——api需要它

//descriptions route

App.DescriptionsRoute = Ember.Route.extend({
  ...
  model: function () {
    var store = this.get('store'),
        friend = this.modelFor('friend');
    return store.find('description', {friend_id: friend.id});
  }
})

//descriptions controller

App.DescriptionsController = Ember.ArrayController.extend({
  ...
  actions: {
    createDescription: function () {
      var name = this.get('name'),
          friend_id = this.get('controllers.friend').get('id'),
          store = this.get('store'),
          description = store.createRecord('description', {
            name: name,
            friend_id: friend_id
          });
      description.save();
    },
    upvoteDescription: function (description) {
      var count = description.get('count');
      description.set('count', count + 1);
      description.save();
    }
  }
});

//descriptions template

{{input value=name action="createDescription" type="text"}}

{{#each controller}}
    <div {{bind-attr data-name=name data-count=count }} {{action upvoteDescription this}}>
        <div>{{name}}</div>
        <span>{{count}}</span>
    </div>
{{/each}}
//路由描述
App.descriptionroute=Ember.Route.extend({
...
模型:函数(){
var store=this.get('store'),
friend=this.modelFor('friend');
return store.find('description',{friend\u id:friend.id});
}
})
//描述控制器
App.descriptioncontroller=Ember.ArrayController.extend({
...
行动:{
createDescription:函数(){
var name=this.get('name'),
friend_id=this.get('controllers.friend').get('id'),
store=this.get('store'),
description=store.createRecord('description'{
姓名:姓名,,
朋友号:朋友号
});
description.save();
},
UPVOTED说明:功能(说明){
var count=description.get('count');
说明.集合('计数',计数+1);
description.save();
}
}
});
//描述模板
{{input value=name action=“createDescription”type=“text”}
{{{#每个控制器}}
{{name}}
{{count}}
{{/每个}}
find(by query)不会主动确保它具有与查询匹配的记录,因此您必须手动将其注入结果中

createDescription: function () {
  var name = this.get('name'),
      friend_id = this.get('controllers.friend').get('id'),
      store = this.get('store'),
      description = store.createRecord('description', {
        name: name,
        friend_id: friend_id
      });
  description.save();
  this.pushObject(description);
},
或者您可以使用实时记录数组(
过滤器
/
全部

find(by query)不会主动确保它具有与查询匹配的记录,因此您必须手动将其注入到结果中

createDescription: function () {
  var name = this.get('name'),
      friend_id = this.get('controllers.friend').get('id'),
      store = this.get('store'),
      description = store.createRecord('description', {
        name: name,
        friend_id: friend_id
      });
  description.save();
  this.pushObject(description);
},
或者您可以使用实时记录数组(
过滤器
/
全部


我尝试使用live record阵列,但无法使其工作,因此我选择了注入路线。细微变化:this.get('content').pushObject(description);“但除此之外,它工作得很好。”乔纳森·安代顿我也看到了这一点。如果我的模型查找w/params,则我的阵列控制器不同步。这仍然是您要使用的解决方案吗?我尝试使用live record阵列,但无法使其工作,所以我选择了注入路线。细微变化:this.get('content').pushObject(description);“但除此之外,它工作得很好。”乔纳森·安代顿我也看到了这一点。如果我的模型查找w/params,则我的阵列控制器不同步。这仍然是您要采用的解决方案吗?