0

html/js/knockout を使用してページで作業しています。このページには、サービスから入力されたテーブルが含まれています。また、このページには、ユーザーがこのコントロールでアイテムを選択して、データを含む新しい更新されたテーブルを表示できる選択コントロールなどのフィルターが含まれています。サーバーとの接続とテーブルの描画は正常に機能しています。私が抱えている問題は、フィルターを使用してテーブルの負荷を処理する方法です。これは、最初にすべてのデフォルトパラメーターを使用してサービスを呼び出しているためです。私のコードは次のようなものです:

export var selectedType= ko.observable();

export function activate() {    
  loadInitData();
}

function loadInitData() {
   datacontext.getTypes(TypesObservable);
  datacontext.getRegistration(registrationsObservable, 'allTypes'); //just making simple
}

selectedType.subscribe(function (newValue) {    
   //calling to my service.
    datacontext.getRegistration(registrationsObservable, newValue.name);
   //My issue: this section is called also when my registrationsObservable are populated the first time.
 });

このコードの問題は、テーブルが複数回入力されることです。(実際には、ページにさらに 3 つのフィルターがあります)。このリンクは、私が説明したものと同様のものを示しています: http://jsfiddle.net/rolandomartinezg/U66n9/2/

ありがとうございました!

4

2 に答える 2

1

次のような 計算フィールドを使用できます。

vm.registrationsFiltered = ko.computed(function() {
         //return
    if(vm.selectedFruit && vm.selectedFruit() && vm.selectedFruit().name){
     return  $.grep(vm.registrations(),
                           function(item,idx){
                               return item.name === vm.selectedFruit().name
                           });


    }
    }, this);

次に、代わりに新しいフィルター処理されたプロパティを使用するようにビューを変更します。ここであなたのフィドルに追加しました: http://jsfiddle.net/U66n9/9/

于 2013-06-17T20:55:07.593 に答える