Javascript 取消绑定。创建() ! 校正

Javascript 取消绑定。创建() ! 校正,javascript,backbone.js,parse-platform,Javascript,Backbone.js,Parse Platform,装订的不是它。当您添加到您的模式中时,您会逐渐创建不一致的缺少值(在我的例子中是关系)。My.create()调用命中Parse/Mongo的方式使模型绑定要求重新启动主视图。速记解决方案:偶尔擦除数据:) 我的主视图有.bindAll(这是'addOne','addAll','render','logOut','…') 在另一个视图中,我使用以下两种链接方法设置Parse.Relation: 1 // If you hit return in the add friend input fi

装订的不是它。当您添加到您的模式中时,您会逐渐创建不一致的缺少值(在我的例子中是关系)。My.create()调用命中Parse/Mongo的方式使模型绑定要求重新启动主视图。速记解决方案:偶尔擦除数据:)

我的主视图有
.bindAll(这是'addOne','addAll','render','logOut','…')
在另一个视图中,我使用以下两种链接方法设置Parse.Relation:

1  // If you hit return in the add friend input field, create new Email model 
2  // and friend it
3  addFriendOnEnter: function(e) {
4    var self = this;
5    console.log("About to create email "+self.emailInput.val());
6    self.emails.create(
7      {
8        email:   self.emailInput.val(),
9        ACL:     new Parse.ACL(Parse.User.current())
10     },
11     {
12       success: function (email) {
13         console.log("Email added "+email.get("email"));
14         self.addFriend(email);
15       }
16     },
17     {
18       silent:true
19     }
20   );
21   console.log("Created email");
22 },
23
24 addFriend: function(email) {
25   console.log("Add friend relation to topic "+email.get("email"));
26   this.friendsRel.add(email);
27   console.log("Save topic");
28   this.options.topic.save({silent:true});
29   console.log("Render friend");
30   this.renderOneFriend(email);
31   console.log("Clear input val");
32   this.emailInput.val('');
33 },
我看到的最后一个日志是第21行,似乎没有调用addFriend,基本上应用程序会刷新自己,即我会返回到主视图,重新呈现自己

我怀疑的一个方向是主视图绑定到任何模型更改,包括.create()调用

如何解除特定呼叫的绑定

谢谢,
Gon

可能是您在单击处理程序中忘记了
e.preventDefault()

  • 我会在你的create调用中添加一个错误处理程序,这样你就知道是否调用了它而不是success

  • 您是否尝试过在Chrome的JavaScript调试器中单步执行代码?然后您就可以确定调用了哪个函数

  • 无提示:true应与success位于同一个options对象中

  • 您可以尝试使用“var email=new email(…)”或其他方式创建对象,然后保存它并在成功处理程序中调用self.emails.add(email)进行保存


  • 谢谢,这些都是很棒的指针,特别是关于静默:true和分解.create()到.add()和.save()的指针。结果是我的老排是问题所在。