2012-05-03 2 views
0

私はKnockoutJSを使用してユーザーのリストを表示しています。同じページで、リンクがシャドウボックスのモーダルウィンドウをトリガします。ユーザーがモーダルを閉じると、ユーザーのリストを更新する必要があります。私はすでにShadowboxモーダルトリガーからコールバック関数を持っていますが、それをユーザーのリストをリフレッシュする方法はありますか?knockoutJS - 他のjavascript関数からテーブルを再バインド

 function User(data) { 
      this.firstname = ko.observable(data.firstname); 
      this.lastname = ko.observable(data.lastname); 
      this.fullname = ko.computed(function() { 
       return this.firstname() + " " + this.lastname(); 
      }, this); 
      this.userfunctions = ko.observable(data.userfunctions); 
      this.phonework = ko.observable(data.phonework); 
      this.phonemobile = ko.observable(data.phonemobile); 
      this.email = ko.observable(data.email); 
      this.editurl = ko.observable(data.editurl); 
     } 

     function UserListViewModel() { 
      var self = this; 
      self.users = ko.observableArray([]); 

      self.users.loading = ko.observable(false); 

      self.users.loading(true); 
      $.getJSON("/UserJSON.ashx", { 
       requestType: "userList", 
       pageId: '12', 
       companyId: '1' 
      }, 
      function (allData) { 
       var mappedUsers = $.map(allData, function (item) { return new User(item); }); 
       self.users(mappedUsers); 
       self.users.loading(false); 
      }); 
     } 

     ko.applyBindings(new UserListViewModel()); 
+0

モーダルウィンドウ内で、既にエントリを追加しているのですか?また、変更する場合は、self.users内の実際のインスタンスまたは新しいUserオブジェクトを変更してから、自分の確認後にself.users内のインスタンスを置き換えていますか?ところで、私はあなたがユーザーのリストをリフレッシュすることを意図していると仮定します.UserJSON.ashxに戻る必要はありません。 – Rich

答えて

0

あなたはノックアウトマッピングを見ましたか?これは、サーバーからのデータの更新を処理します。

http://knockoutjs.com/documentation/plugins-mapping.html

私はノックアウトマッピングからロードされ、そこから更新することができる、あなたのviewmodel上の「データ」プロパティを作成します。私はjsfiddleで作業し、この答えを更新します。私はJSFiddleに取り組んで、すでに:-)行われたものが見出された(感謝RPニーマイヤーを!)

http://jsfiddle.net/rniemeyer/EDC7q/

UPDATE 2

UPDATE

JSFiddleを更新しました:http://jsfiddle.net/sb2BX/1/

http://jsfiddle.net/JasonMore/sb2BX/3/

「初期データの読み込み」をクリックし、「シャドウボックスコールバック」をクリックしてください。これはあなたの質問に答えますか?

+0

私はサーバーからのデータの読み込みを処理しました。私は別のjs関数から 'click:loadUpdatedData'を呼び出す方法を整理する必要があります...私はShadowBoxモーダルを閉じるときに呼び出される既存のコールバック関数を持っています。 – Kulvis

+0

あなたはjsfiddleを見ましたか? –

+0

私は少し遅れているかもしれませんが、別の関数からloadUpdatedDataを呼び出す方法を私に見せてくれません。それはちょうど私が持っていないボタンにクリックイベントをバインドする方法を示す...更新されたフィドルを参照してください。下に私の機能が表示されます。 http://jsfiddle.net/sb2BX/1/ – Kulvis

関連する問題