0

!修正

バインディングはそうではありませんでした。スキーマを追加すると、値が欠落している不整合が徐々に作成されます(私の場合はRelations)。私の.create()呼び出しは、モデルバインディングがメインビューの再起動を要求するような方法でParse/Mongoをヒットしていました。簡単な解決策:時々データを消去します:)

..。

私のメインビューには_.bindAll(this, 'addOne', 'addAll', 'render', 'logOut', '...'); 、次の2つのチェーンメソッドを使用して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が呼び出されていないようです。基本的に、アプリは自動的に更新されます。つまり、メインビューに戻されて再レンダリングされます。

私が疑っている1つの方向は、メインビューが.create()呼び出しを含むすべてのモデル変更にバインドされていることです。

その特定の呼び出しのバインドを解除するにはどうすればよいですか?

ありがとう、ゴン

4

2 に答える 2

0

e.preventDefault()クリックハンドラーで忘れた可能性がありますか?

于 2012-07-20T20:21:03.500 に答える
0
  1. create呼び出しにエラーハンドラーを追加するので、成功する代わりに呼び出される可能性があるかどうかがわかります。

  2. ChromeのJavaScriptデバッガーでコードをステップ実行してみましたか?そうすれば、どの関数が呼び出されているかが確実にわかります。

  3. silent:trueは、successと同じオプションオブジェクトに含まれている必要があります。

  4. 「varemail=new Email(...)」などを使用してオブジェクトを作成し、それを保存して、保存の成功ハンドラーでself.emails.add(email)を呼び出すことができます。

于 2012-07-20T20:34:55.547 に答える