微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Backbone.js集合中记录更改,我的集合未定义

如何解决在Backbone.js集合中记录更改,我的集合未定义

|| 嘿!我不是Backbone.js的新手,所以这很可能是一个简单的问题。 我希望每次更改时都可以console.log我的朋友收藏。所以我已经绑定了集合中的“ 0”事件来调用我的logFunction ..,但是在日志函数中“ 1”是未定义的。为什么? 这是我的“应用”:
(function ($) {


       Friend = Backbone.Model.extend({
           //Create a model to hold friend atribute
           name: null
       });


       Friends = Backbone.Collection.extend({

           model: Friend,//This is our Friends collection and holds our Friend models
           initialize: function (models,options) {
               this.bind(\"add\",options.view.addFriendLi);
               this.bind(\"all\",options.view.logFriendsCollection);

               //Listen for new additions to the collection and call a view function if so
           }
       });

       window.AppView = Backbone.View.extend({
           el: $(\"body\"),initialize: function () {
               this.friends = new Friends(null,{ view: this });
           },events: {
               \"click #add-friend\": \"showPrompt\"
           },showPrompt: function () {
               var friend_name = prompt(\"Who is your friend?\");
               var friend_model = new Friend({ \"name\": friend_name });

               this.friends.add(friend_model);
           },addFriendLi: function (model) {
               $(\"#friends-list\").append(\"<li>\" + model.get(\'name\') + \"</li>\");

           },logFriendsCollection: function (args) {
               console.log(\"Friends\",this.friends);
           }

       }); var appview = new AppView;
    

解决方法

        我认为,当您将视图的
logFriendsCollection
方法绑定到Friend集合时,该方法也会接收该集合的上下文。因此,当您在方法中引用
this
时,
this
是指集合而不是视图。 我在您的Fiddler链接上弄乱了它,为使它起作用而进行了更改的代码是
           logFriendsCollection: function () {
               console.log(\"Friends\",this);
           }
    ,        在您的
AppView.initialize
中,应调用
_.bindAll(this,\'logFriendsCollection\')
this
绑定到
AppView
。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。