2013-06-22 1 views
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); 
} 

을 모두 재설정하려면 , 브라우저는 몇 초 동안 응답하지 않는 한 다음 작동합니다.

많은 셀렉트 박스를 동시에 바꾸는 더 좋은 방법이 있습니까?

웹 근로자 일 수 있습니까?

감사합니다.

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

사람 :이 변경하여이 경우에 당신은 쉽게 피할 수

:

+0

당신은 바이올린을 만들 수 있습니까? – Damien

+0

[관찰 가능한 배열 만들기] (http://knockoutjs.com/documentation/observableArrays.html)는 어떻습니까? 이 문맥에서'eval'은 단지 무서운 것입니다. –

+0

http://jsfiddle.net/MeTw7/3/ – HaGi

답변

2

당신은 eval 사용해서는 안

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

업데이트 된 내용보기 fiddle (단순화 된 HTML을보십시오).

관련 문제