2017-04-07 3 views
-1

우선, 나는 Knockout을 가진 초보자입니다. 기본적인 이해를 얻었습니다. 라우팅 용 교차로를 사용하고 있습니다.넉 아웃 JS - Observable에서 뷰를 업데이트하지 않습니다.

이것은 현재 시나리오입니다. URL에서 param.route(). plan으로 값을 가져옵니다. 괜찮습니다.

값은 뷰 모델에서 Observable로 설정됩니다. 그러나 바인딩이 작동하지 않습니다/이전 경로를 사용하여 이전에서이 경로를 탐색 할 때 값이 업데이트되지 않습니다. location.href = "checkout/gold"여기서 gold는 계획입니다. 하지만 페이지를 새로 고침하면 제대로 작동합니다.

추 신 : View 모델이 예상대로 작동합니다. 나는 지금 CONSOLE.LOG

와 일부 코드 확인 두 배 - 작동하는 것 같다 문제가보기 모델

// Function Handling Subsription 
     self.subscribe = function() { 
      alert(self.selectedPlan()); 
      var currentUser = Parse.User.current(); 
      if (currentUser === null) { 
       $('#loginBox').modal('show'); 
      } else { // Else redirect 
       location.href = '#checkout/'+self.selectedPlan(); 
       // Redirect to Checkout page 
      } 
     } // Function ends here 

보기 모델로 리디렉션 기능을

self.selectedPlan = ko.observable(params.route().plan); 

보기

<span data-bind="text:selectedPlan()></span> 
+0

무엇 '을 참조 self' 않습니다 꽤 기대된다 이러한 경우 바인딩 보장? 나는 당신이'self.selectedPlan.subscribe (function (plan) {... location.href = "checkout /"+ 계획; ...})' –

+0

var self = this –

+0

을 사용해야한다고 생각한다. 구독 기능을 적용 할 수 없다. 부모 개체에. 모든 관측 가능한 값에 대해 별도의 구독 함수를 수동으로 만들어야합니다. – Rajesh

답변

-2

그래, 대답을 얻었다. 어쩌면 누군가를 도울 것입니다

이러한 경우 계산 된 관찰 자료를 사용하십시오. 이

var self = this; 

    self.firstName = ko.observable('Bob'); 
    self.lastName = ko.observable('Smith'); 
    self.fullName = ko.computed(function() { 
     return self.firstName() + " " + self.lastName(); 
    }); 

그들의 문서화가

+0

질문에서 'firstName','lastName' 또는'fullName'과 관련된 문제는 무엇입니까? crossroad.js를 사용하는 사람이이 도움이되는 것을 어떻게 알 수 있습니까? – Tomalak

+0

예제를 인용하는 중이었습니다. 이 문제는 교차로와 관련이 없으며 Observable 유형과 관련이 있습니다. –

+0

하지만 해결했다면 코드를 게시하지 않는 이유는 무엇입니까? 그것이이 사이트의 작동 방식입니다. 대답은 질문을 통해 무엇인가해야합니다. 이 답변은 쓸모가 없으며 누군가 다른 사람이 올리면 그것을 혼란시킬 것입니다. – Tomalak