2013-03-24 50 views
3

我试图从商店中删除记录,并自动更新列出的项目视图中删除记录,但到目前为止,我没有运气。灰烬JS:从的hasMany关系,并更新视图

我在控制器的delete方法试图tweet.deleteRecord()但现在看来,这将删除所有“推特”用户已,它不更新的观点,并试图再次访问该用户的鸣叫,当我得到一个错误。

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

贝娄是我的代码部分:

型号

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

你在开玩笑吗? https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Reserved_Words – 2013-07-12 16:01:41

回答

4

您需要在App.Tweet模型中包含belongsTo关系。例如,

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

+0

谢谢!包括两种模型中的关系解决了我的问题。 – 2013-03-26 07:29:28