2017-04-07 10 views
-1

まず、ノックアウトの初心者です。いくつかの基本的な理解を得た。私はルーティングのためにクロスロードを使用していますKnockout JS - Observableは読み込み時にビューを更新しません

これは現在のシナリオです。 URLからparam.route()。planという値を取得します。それは正常に動作します

値は、ビューモデルでObservableに設定されます。ただし、バインディングは機能しません。/ valueは、以前のlocation.href = "checkout/gold"を使用してこのルートに移動すると更新されません。ここで、goldはプランです。しかし、私がページをリロードすると、正常に動作します。

PS: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/"+ plan; ...})' –

+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

関連する問題