2014-03-01 4 views
0

Kendo MVVM 프레임 워크를 사용하는 Kendo 앱에서 : "global"viewModel은 앱의 모든 부분에 공통적 인 정보입니다. isLoggedIn 속성을 가진 UserState.여러 viewModels에서 kendo observable 속성을 사용하는 방법

많은 다른보기 및 ViewModels은 userState 개체에 액세스합니다 (내가 볼 수있는 것으로부터 1 개의 View는 Kendo의 1 개의 ViewModel에 바인딩됩니다).

예를 들어, 인증되지 않은 경우 내 홈 페이지에 로그인 단추가 표시 될 수 있습니다. 그런 다음 다른 모든 스크린은 로그인 한 후에 다르게 동작하므로 각 ViewModel이 UserState 객체를 참조해야합니다. 그러나 이들 중 하나라도 변경하면 Kendo Observable 객체를 사용할 때 다른 모든 뷰가 업데이트되어야합니다. 이것은 효과가없는 것 같습니다. 나는 (시작을 iSloggedIn 속성을 노출하고 뷰에 바인딩 ViewModel1에, 그래서 http://jsfiddle.net/rodneyjoyce/uz7ph/4/

var app = new kendo.mobile.Application(); 

var userStateviewModel = kendo.observable({ 
    isLoggedIn: false, 
}); 

var viewModel1 = kendo.observable({ 
    label: 'From ViewModel1', 
    isLoggedInVM1: userStateviewModel.isLoggedIn  
}); 

userStateviewModel.set('isLoggedIn', true); 
//viewModel1.set('isLoggedInVM1', userStateviewModel.isLoggedIn); 

alert(viewModel1.isLoggedInVM1); 

kendo.bind($("#testForm"), viewModel1); 

userStateViewModel이 많은 다른 뷰에 의해 사용됩니다

나는 문제를 설명하기 위해 여기에 간단한 예제를 설정 off로 거짓).

그런 다음 코드는 userStateViewModel에서이 값을 true로 설정합니다. 따라서 모든 관찰 인스턴스를 true로 변경해야하지만 작동하지 않습니다. 이 코드 줄을 주석으로 처리하면 //viewModel1.set('isLoggedInVM1 ', userStateviewModel.isLoggedIn);

후 ... 그것은 작동하지만 내가 때를 업데이트합니다 (10) ViewModels의 알하지 않는 한이 관측 지점을 패배하지만, 모든 뷰는 새 값을 업데이트해야

답변

2

isLoggedInVM1: userStateviewModel.isLoggedInviewModel1 초기화에서 수행하면 정확한 시간 (false)에있는 값이 할당됩니다. 대신 값을 가져 오는 함수를 사용하십시오. isLoggedInVM1을 확인하려고 할 때 다음

var viewModel1 = kendo.observable({ 
    label: 'From ViewModel1', 
    isLoggedInVM1: function() { 
     return userStateviewModel.get("isLoggedIn"); 
    } 
}); 

, 수행

alert(viewModel1.isLoggedInVM1()); 

또는

<h3 data-bind="text: isLoggedInVM1()"></h3> 

귀하의 JSFiddle 여기 수정 : http://jsfiddle.net/OnaBai/uz7ph/6/

+0

좋아요, 감사 - 나는 몰랐다 당신이 참조 할 수 그것은 기능 - 모든 것이 잘 작동한다. – Rodney

+0

좋아, 나는 probl을 발견했다. 이 접근 방식을 사용하여 -이 JSFiddle을 참조하십시오. userState.loginUser()를 호출하여 userStateViewModel의 isLoggedIn 값을 변경하면 업데이트되지 않습니다. 버튼을 실행하고 버튼을 클릭하여 문제를 확인합니다. 바인딩에 업데이트 된 값이 반영되지 않습니다 (단, 경고 상자는 적습니다). 어떤 도움을 주셔서 감사합니다. 감사합니다. http://jsfiddle.net/rodneyjoyce/uz7ph/11/ – Rodney

+0

참고 : 위의 설명에서 내 새로운 질문이 사라져서 여기에 질문했습니다. http://stackoverflow.com/questions/22161922/using-a -kendo-observable-property-in-multiple-viewmodels – Rodney

관련 문제