2014-04-22 74 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的标签