1

プロパティ参照をメソッド引数として動的に渡すにはどうすればよいですか?

ajaxsuccess関数の応答データは次のようになります。

{
   users: {
      data: {}
   },
   countries: {
      data: {}
   },
   states: {
     data: {}
   }
}

これは、以前にデータを保存する方法の例です:

var users = ko.observable();  
var countries = ko.observable();  
var states = ko.observable();

var store = function(data, observable)
{
    observable(data);
}

$.ajax({
   //... ajax options...

   success: function(response)
   {
       // This is how i store the data previously
       store(response.users.data, users);
       store(response.countries.data, countries);
       store(response.states.data, states);
   }
});

そして、これは私がこれまでに試したことの例です:

$.ajax({
   //... ajax options...

   success: function(response)
   {
       // This is how i want to achieve
       ko.utils.objectForEach(response, function(key, data)
       {
           store(data.data, key);
       });
   }
});

残念ながら、storeメソッドの 2 番目の引数にテキスト文字列を渡すだけです。

どんな助けや提案もいただければ幸いです!

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

4

1 に答える 1

1

それらをオブジェクトのプロパティにしてから、文字列を使用します。

var obj = {
    users: ko.observable(),
    countries: ko.observable(),
    states: ko.observable()
};

var store = function(data, observable)
{
    var prop = obj[observable];
    if (prop) { // Just being defensive
        prop(data);
    }
};

$.ajax({
   //... ajax options...

   success: function(response)
   {
       var key;
       for (key in response) {
           store(response[key].data, key);
       }
   }
});
于 2015-05-28T08:44:15.233 に答える