Knockout可观察变量不会改变其在点击上的值

时间:2014-04-22 09:00:31

标签: knockout.js

我不知道为什么我的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/

3 个答案:

答案 0 :(得分:1)

您的getTitle函数会更新currentTitle的值,而不是更新observable。

尝试:

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

答案 1 :(得分:0)

正如@phuzi所说,你没有正确更新observable,但你也需要将所选项目传递给函数:

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

见这里:updated fiddle

答案 2 :(得分:0)

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

更改: getTitle to setTitle。

在viewmodel中包含setTitle。

删除了不必要的'viewmodel'。在约束力。

我建议在viewmodel中使用'selectedArticle'并简单地用

绑定文本
   text: chosenArticle.title

PS:请删除jquery标记