2017-08-07 10 views
2

にリダイレクトされませんが正しくバインドhref="/site/models#{"catId": "76b4a8ed-1350-46af-8184-3b68029cbd22"}"が正しく表示されますが、アイテムをクリックすると新しいページにリダイレクトされません。私の最初の考えはおそらくハッシュのためだと思っていましたが、そうではありませんでしたので、_selfのいずれかにはtarget属性を使用しようとしました。私の次の推測では、これをオーバーライドするjavascriptメソッドがあり、これまでのところ何も見つかりませんでした。だから私の質問はなぜそれは動作しないのですか?Knockoutjsは、タグのHREFが、私はこのHTMLを持っているページ

ノックアウトのViewModel:

landing.dataModels.Category = function (_id, _categoryTypeId, _name, _description, _parentId, _children) { 

    var self = this; 

    this.ID = ko.observable(_id); 
    this.CategoryTypeId = ko.observable(_categoryTypeId); 
    this.Name = ko.observable(_name); 
    this.Description = ko.observable(_description); 
    this.ParentId = ko.observable(_parentId); 
    this.Url = ko.computed(function() { 
     return '/site/models#{"catId": "' + self.ID() + '"}'; 
    }); 
    this.Children = ko.observableArray([]); 
    this.getChildren = ko.computed(function() { 
     return self.Children(); 
    }); 
    _.each(_children, function (item) { 
     self.Children.push(new landing.dataModels.Category(item.ID, item.categoryTypeId, item.Name, item.Description, item.ParentId, item.Children)); 
    }); 
}; 

更新

私は私がアイテムを右クリックして[新しいウィンドウで開いたときに、それは仕事をし、ページを示しているが、そのないと言わざるを得ない直接の左クリックに取り組んでいます。

+0

は、ユーザーがすでにオンになっているページに指示するあなたの '#'リンクですか?なぜなら、もし私が知っている限り、ブラウザはページリロードの代わりに*ハッシュ変更*イベントを引き起こすからです... – user3297291

答えて

1

おそらく問題が発生したURLで引用符で囲まれている:

href="/site/models#{"catId": "76b4a8ed-1350-46af-8184-3b68029cbd22"}" 

hrefの値が無効なHTMLとしてURLの残りの部分を残して、実際に"/site/models#{"です。あなたはエスケープURLにバインドしようとすることができ

this.Url = ko.computed(function() { 
    return encodeURI('/site/models#{"catId": "' + self.ID() + '"}'); 
}); 
1

は最終的に私は疲れたと私はちょうどそれを動作させるための簡単なjqueryのクリックで行きました:

$(document).ready(function() { 
     setTimeout(function() { 
      $(document).on("click", ".ilia-catLink", function() { 
       var a = $(this).attr("href"); 

       window.location = a; 
      }); 
     }, 100); 

それはこのように動作しますが、私はまだ、なぜ自分自身のことのhref仕事ではないでしょうか。

関連する問題