Ember JS:从hasMany关系和更新视图中删除记录

时间:2013-03-24 19:25:45

标签: ember.js ember-data

我正在尝试从商店中删除记录并自动更新列出项目的视图,但到目前为止我没有运气。

我在控制器的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>

1 个答案:

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