3

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

我尝试了控制器tweet.deleteRecord()delete方法,但它似乎删除了用户拥有的所有“推文”,它不会更新视图,并且当再次尝试访问用户推文时出现错误。

从商店中删除记录、更新记录可能具有的任何关系以及更新视图的正确方法是什么?

贝娄是我的代码的一部分:

模型

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>
4

1 回答 1

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关系也会更新。这是一个 jsfiddle

于 2013-03-24T21:46:16.173 回答