2016-09-25 4 views
0

API ajax 응답에 따라 값이 채워지는 mtn 및 atn으로 선언 된 2 개의 변수가 있습니다.값을 설정하기 전과 후에 관찰 가능한 변수에 액세스하는 중 작동하지 않습니다.

이제 mtn과 atn 변수에 API 응답에서 반환 된 값을 할당하고 있습니다. 내 경우에는 mtn이 null로오고 ATN은 10 자리 숫자가 나오기 때문입니다. 그래서 atn1, atn2, atn3에 atn의 부분 문자열을 할당하는 반면 mtn1, mtn2 및 mtn3은 코드 스 니펫 아래에서 볼 수 있듯이 변경되지 않습니다.

var ViewModel = { 
mtn: null, 
atn: null, 
mtn1: ko.observable(null), 
mtn2: ko.observable(null), 
mtn3: ko.observable(null), 
atn1: ko.observable(null), 
atn2: ko.observable(null), 
atn3: ko.observable(null) 
} 
// Ajax API call happens and assigns ViewModel.mtn and ViewModel.atn 
if (ViewModel.mtn != null && ViewModel.mtn.length == 10) { //This condition is not true because ViewModel.mtn is coming as null in case and so mtn1, mtn2 and mtn3 observables are untouched 
ViewModel.mtn1 = ViewModel.mtn.substring(0, 3); 
ViewModel.mtn2 = ViewModel.mtn.substring(3, 6); 
ViewModel.mtn3 = ViewModel.mtn.substring(6, 10); 
} 
if (ViewModel.atn != null && ViewModel.atn.length == 10) { 
ViewModel.atn1 = ViewModel.atn.substring(0, 3); 
ViewModel.atn2 = ViewModel.atn.substring(3, 6); 
ViewModel.atn3 = ViewModel.atn.substring(6, 10); 
} 
ko.applyBindings(ViewModel); 

// Click event happens from View and Business logic UI validations take place below 
processClick: function() { 
    .var strmtn = ViewModel.mtn1 + ViewModel.mtn2 + ViewModel.mtn3; // This is not working and throwing error and only ViewModel.mtn1() is working 
     var stratn = ViewModel.atn1 + ViewModel.atn2 + ViewModel.atn3; // This is working fine but ViewModel.atn1() is not working. 

나는 mtn1이 접촉되지 않는 반면 ViewModel.atn1이 ViewModel.mtn1가 작동되지 않는 mtn1 접근 방법 반면 노력으로 atn1에 액세스하는 방법에 대한 이유 때문에 atn1에 대한 관찰의 재 할당의 판단 .

그렇다면 관측 값을 터치했는지 여부를 모르기 때문에 관찰 가능 값을 호출하는 액세스 방법을 어떻게 알 수 있습니까? :(

PS :..이 문제는 나뿐만 아니라 내가 방금 추가 2.X 버전을 사용하고 녹아웃 3.X 버전에서 발생하는되어

+1

를 수행

ViewModel.mtn1(ViewModel.mtn.substring(0, 3)); 

그 내용을 얻으려면 않습니다. 라인'ViewModel.mtn1 = ViewModel.mtn.substring 후 (0, 3)','mtn1'은 더 이상 관찰 가능한, 그것은 일반적인 문자열입니다. – DCoder

답변

1

피 감시는 게터-setter 함수입니다 내용을 설정합니다. , 당신은 당신이 설정하거나 관찰의 값을 얻을 방법은 그

value = ViewModel.mtn1();