0

我有 75 个选择框。它们中的每一个都被数据绑定到一个变量

MyModel.selectbox_1 = ko.observable(1);
MyModel.selectbox_2= ko.observable(2);
MyModel.selectbox_3= ko.observable(3);
MyModel.selectbox_4= ko.observable(3);
...
MyModel.selectbox_75= ko.observable(0);

每个选择框只有 4 个选项。

我希望能够根据用户对问题的回答来更改选择框。例如重置所有这些

var variable_name = "";
for (var i = 1; i < 76; i++) {
 variable_name = 'MyModel.selectbox_' + i;
 eval(variable_name)(0);
}

如果我这样做,浏览器会在几秒钟内没有响应,然后它就可以工作了。

有没有更好的方法同时更改多个选择框?

可能是网络工作者?

谢谢你。

4

1 回答 1

2

你不应该使用eval

在这种情况下,您可以通过更改它来轻松避免它:

var variable_name = "";
for (var i = 1; i < 76; i++) {
    variable_name = 'MyModel.selectbox_' + i;
    eval(variable_name)(0);
}

至:

for (var i = 1; i < 76; i++) {
    MyModel['selectbox_' + i](0);
}

但是您真的应该考虑使用数组进行选择:

var i,
    Plan_Model = {
        plan_spread_options: ko.observableArray(['0', '1', '2', '3', '4']),
        selects: []
    };

// init
for (i = 0; i < 75; i++) {
    Plan_Model.selects.push(ko.observable(0));
}

// apply bindings
ko.applyBindings(Plan_Model, $("#plan_bilgileri")[0]);

// update
for (i = 0; i < Plan_Model.selects.length; i++) {
    Plan_Model.selects[i](2);
}

请参阅更新的小提琴(另请参阅简化的 html)。

于 2013-06-23T20:56:04.727 回答