2012-04-19 9 views
1

背景:マッピングプラグインを使用して、1ページのknockout.jsアプリがあります。データはWebsocket JSONを介してサーバーから更新されます。私は、アプリケーションが正常にデータ(コンソールでのデータの印刷)を受け取っていることがわかります。オブジェクトの削除/追加がある場合、ViewModelは問題は何も更新されません。Knockout.js観測可能なバインディングが更新されない(JSONマッピングで)

問題:オブジェクトのプロパティは、サーバーから更新されると、それは ViewModelには変更されません。オブジェクトのプロパティを何らかの形でそれぞれの更新で返す必要がありますか?

var userMapping = { 
     "users": { 
      key: function(data) { return ko.utils.unwrapObservable(data.id); }, 
      create: function(options) { 
       // for sortable ui access 
       return createUser(options.data); 
      } 
     } 
    }; 
var jobMapping = { 
     "jobs": { 
      key: function(data) { return ko.utils.unwrapObservable(data.id); }, 
      create: function(options) { 
       // for sortable ui access 
       return createJob(options.data); 
      }, 
      update: function(options) { 
       return createJob(options.data); 
      } 
     } 
    }; 
var createJob = function(job, user) {   
     // leaflet init 
     createJobIcon(job); 

     // general data mapping 
     var result = ko.mapping.fromJS(job); 
     return result; 
    }; 
self.engineModel.update = function(data) { 
     ko.mapping.fromJS(data, userMapping, self.engineModel); 
    }; 

とのViewModelで:洞察力のための

<li data-bind="visible: canceled()==false, attr: {class: 'job-li canceled-'+canceled()+' started-'+started()+' hold-'+hold() }"> 

おかげでここ

はコードの関連するスニペットです!

答えて

2

私はこの行動を修正することができましたが、決定からの長期的な影響については懐疑的です。それが必要として key: function(data) { return ko.utils.unwrapObservable(data.id); },

今すぐすべてのアップデート:

私はこの行を削除しました。誰かがさらなる処理について考えているなら、私はすべて耳にします(たとえば、これがパフォーマンスに影響しますか?)

関連する問題