【问题标题】:Knockout observable variable not changing its value on click敲除可观察变量在点击时不会改变其值
【发布时间】:2014-04-22 09:00:31
【问题描述】:

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

【问题讨论】:

标签: knockout.js


【解决方案1】:

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

试试:

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

【讨论】:

    【解决方案2】:

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

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

    请看这里:updated fiddle

    【讨论】:

    • @Devnegikec 如果您对答案感到满意,可以通过单击对勾来标记答案
    【解决方案3】:

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

    更改: getTitle 到 setTitle。

    在视图模型中包含 setTitle。

    删除了不必要的“视图模型”。在绑定中。

    我建议在视图模型中添加一个“chosenArticle”并简单地将文本与

       text: chosenArticle.title
    

    PS:请去掉jquery标签

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-05
      • 2013-01-10
      • 2014-10-08
      • 1970-01-01
      • 1970-01-01
      • 2023-03-21
      • 2011-12-12
      • 1970-01-01
      相关资源
      最近更新 更多