Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从对象循环键动态传递属性引用_Javascript_Knockout.js_Knockout 2.0_Knockout Mvc_Knockout 3.0 - Fatal编程技术网

Javascript 从对象循环键动态传递属性引用

Javascript 从对象循环键动态传递属性引用,javascript,knockout.js,knockout-2.0,knockout-mvc,knockout-3.0,Javascript,Knockout.js,Knockout 2.0,Knockout Mvc,Knockout 3.0,如何将属性引用作为方法参数动态传递? 这就是ajaxsuccess函数响应数据的样子: { users: { data: {} }, countries: { data: {} }, states: { data: {} } } 这是我以前存储数据的示例: var users = ko.observable(); var countries = ko.observable(); var states = ko.obs

如何将属性引用作为方法参数动态传递?

这就是ajax
success
函数响应数据的样子:

{
   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
方法的第二个参数

任何帮助和建议都将不胜感激


谢谢。

将它们设置为对象的属性,然后使用字符串:

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);
       }
   }
});

这就是我要找的!非常感谢。