개체를 ID로 사용할 수 없습니다. 화면 뒤에서 일어나는 일은 dijit/form/Select
의 값을 변경하면 dijit/form/Select::compare()
함수를 사용하여 이전 값이 새 값과 다른지 먼저 확인합니다. 이 함수는 다음과 같이 구현됩니다.
compare: function(/*anything*/ val1, /*anything*/ val2){
if(typeof val1 == "number" && typeof val2 == "number"){
return (isNaN(val1) && isNaN(val2)) ? 0 : val1 - val2;
}else if(val1 > val2){
return 1;
}else if(val1 < val2){
return -1;
}else{
return 0;
}
}
즉, 달라 지려면 id가 이전 ID보다 작거나 커야 함을 의미합니다. 당신이 객체를 비교할 때
그러나,이 예를 들어, 작동하지 않습니다
var a = { id: 1 };
var b = { id: 2 };
a < b; // Returns false
b < a; // Returns false
을 따라서, 특성이 다른 경우에도, 비교는 항상 false를 반환, 그래서 두 개체는 "동일"로 간주됩니다 이는 onChange
이벤트가 트리거되지 않음을 의미합니다.
이 문제를 해결하기 위해, 당신은 예를 들어, compare()
함수의 구현을 변경해야합니다 :
이제
var selectServerAddServices = new Select({
name : "selectServer_forAddService",
style : {
width : '180px'
},
compare: function(val1, val2) {
return (val1.id1 - val2.id1) + (val1.id2 - val2.id2);
},
onChange: function() {
alert("test");
}
});
는 각각의 onChange
트리거를해야하는 두 사용자의 ID 등록 정보를 확인합니다 케이스. 또한 JSFiddle을 업데이트했습니다 : http://jsfiddle.net/gxy2G/3/
'selectServerAddServices.on ("change", cunction())'을 사용하면 똑같은가요? – dgiugg
예 그 같은, 양방향의 dosent 작업 – user3808286
당신이 뭔가 잘못하고있는 것처럼 보입니다 : http://jsfiddle.net/gxy2G/ – g00glen00b