0

!更正

绑定不是它。当您添加到您的架构时,您会逐渐创建与缺失值的不一致(在我的情况下为关系)。我的 .create() 调用以模型绑定要求重新启动主视图的方式击中 Parse/Mongo。速记解决方案:不时擦除您的数据:)

...

我的主视图有_.bindAll(this, '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() 调用。

如何取消绑定该特定呼叫?

谢谢,贡

4

2 回答 2

0
  1. 我会在你的 create 调用中添加一个错误处理程序,这样你就知道它是否被调用而不是成功。

  2. 您是否尝试过在 Chrome 的 JavaScript 调试器中单步执行代码?然后你就会确定调用了哪个函数。

  3. silent:true 应该与成功在同一个选项对象中。

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

于 2012-07-20T20:34:55.547 回答
0

可能是您忘记e.preventDefault()了点击处理程序吗?

于 2012-07-20T20:21:03.500 回答