我正在尝试从商店中删除记录并自动更新列出项目的视图,但到目前为止我没有运气。
我在控制器的tweet.deleteRecord()
方法中尝试了delete
,但它似乎删除了用户拥有的所有“推文”,它没有更新视图,并且在尝试再次访问用户推文时我收到了错误。
从商店删除记录的正确方法是什么,更新记录可能具有的任何关系并更新视图?
Bellow是我的代码的一部分:
模型
App.Store = DS.Store.extend({
revision: 11,
adapter: 'DS.FixtureAdapter'
});
App.User = DS.Model.extend({
screenName: DS.attr('string'),
name: DS.attr('string'),
profileImage: DS.attr('string'),
url: DS.attr('string'),
followersCount: DS.attr('number'),
description: DS.attr('string'),
tweetsCount: DS.attr('number'),
friendsCount: DS.attr('number'),
tweets: DS.hasMany('App.Tweet')
});
App.Tweet = DS.Model.extend({
date: DS.attr('date'),
text: DS.attr('string'),
containsURL: DS.attr('boolean')
});
控制器
App.UserController = Ember.ObjectController.extend({
delete: function(tweet) {
// code to delete tweet both from
// App.Tweet and App.User.Tweets relationship
// and automagically update the view
}
});
查看
<script type="text/x-handlebars" data-template-name="user">
<h3>{{ controller.name }}</h3>
<ul>
{{#each tweet in tweets}}
<li>
{{ tweet.text }}
-
<a href="#" {{action "delete" tweet}}>Delete</a>
</li>
{{/each}}
</ul>
</script>
答案 0 :(得分:4)
您需要在belongsTo
模型中加入App.Tweet
关系。例如,
App.Tweet = DS.Model.extend({
date: DS.attr('date'),
text: DS.attr('string'),
containsURL: DS.attr('boolean'),
user: DS.belongsTo('App.User'),
});
现在,当您致电tweet.deleteRecord()
时,相应的用户模型的tweets
关系也会更新。 Here's a jsfiddle