2014-04-22 114 views
0

我不知道爲什麼我的currentTitle在點擊時沒有改變。敲擊可觀察變量不會改變其點擊值

viewModel = { 
    articles: ko.observableArray([{ 
     id: 1, 
     title: "Article One", 
     content: "Content for article one."}, 
    { 
     id: 2, 
     title: "Article Two", 
     content: "Content for article two."}, 
    { 
     id: 3, 
     title: "Article Three", 
     content: "Content for article three."} 
               ]), 
    currentTitle: ko.observable("old") 
}; 


<div data-bind="foreach: viewModel.articles()"> 
<div data-bind="text:title,click: getTitle"></div> 
</div> 
<div data-bind="text: viewModel.currentTitle"></div> 


getTitle = function(){ 
     viewModel.currentTitle = "title"; 
} 
ko.applyBindings(viewModel); 

這裏發佈我的代碼:http://jsfiddle.net/devnegikec/TBP43/

+0

[設置可觀察在淘汰賽不更新值可能重複](http://stackoverflow.com/questions/19391415/setting-value-of-observable-not-updating-in-knockout) – nemesv

+0

如果您對此感到滿意並請您充分回答您的問題,請標記爲已接受的答案。 – phuzi

回答

1

getTitle功能更新currentTitle的價值,而不是更新的觀測。

嘗試:

getTitle = function(){ 
    viewModel.currentTitle("title"); 
} 
0

正如@phuzi說,你不正確更新可觀察的,但你還需要選擇的項目傳遞給函數太:

getTitle = function(item){ 
    viewModel.currentTitle(item.title); 
} 

看這裏:updated fiddle

+0

感謝它現在對我有用。 – Devnegikec

+0

@Devnegikec你可以通過點擊勾號來標記答案,如果你對答案滿意 – Tanner

0

http://jsfiddle.net/TBP43/3/

更改: getTitle to setTitle。

在viewmodel中包含setTitle。

刪除了不必要的'viewmodel'。在綁定。

我會建議其在視圖模型一個「chosenArticle」,簡單地用

text: chosenArticle.title 

PS結合的文本:請刪除jQuery的標籤