【问题标题】:how to update ko.observable text on click event?如何在点击事件上更新 ko.observable 文本?
【发布时间】:2014-08-27 23:05:05
【问题描述】:

这应该很简单,但我肯定弄错了。

如何在点击事件上更新 ko.observable 文本? 我可以使用“afterkeydown”或“keypress”来执行此操作,但如果单击事件则不行。http://knockoutjs.com/documentation/value-binding.html

<span data-bind="text: Count"></span>
<button data-bind="click: update">Update</button>

 function MyViewModel() {
     var self = this;

     self.Count = ko.observable("0");

     self.update = function() {
         self.Count = ko.observable("1");
     }
 }

http://jsfiddle.net/EBsj5/

【问题讨论】:

    标签: javascript knockout.js


    【解决方案1】:

    你应该像函数一样改变它。

    self.update = function() {
        self.Count("1");
    }
    

    演示:http://jsfiddle.net/EBsj5/1/

    任何基础教程都会向你解释这一点,所以我建议你看一些。

    【讨论】:

    • 谢谢。作为新手,我知道我缺少一些基本的东西。
    【解决方案2】:

    当您设置 Knockout observable 的值时,您需要像函数一样使用参数并传入新值。

    <span data-bind="text: Count"></span>
    <button data-bind="click: update">Update</button>
    
     function MyViewModel() {
         var self = this;
    
         self.Count = ko.observable("0");
    
         self.update = function() {
             self.Count("1");
         }
     }
    

    在这种情况下,这会将 observable 更新为“1”。您不需要再次调用 ko.observable(),因为您已经创建了 observable,您只是尝试使用 setter 函数“设置”值。

    【讨论】:

    • 没什么大不了的,但正如 Pinocchio 所说,您应该阅读一些关于 Knockout 的教程,因为它们非常有用。我只是希望如果将来有人偶然发现这个答案,他们对为什么需要使用 parans 有一个更好的快速概要,因为这可能是 SO.com 上再次出现的最大的 Knockout 相关问题。实际上,如果 Pinocchio 只是编辑他的答案以包括为什么 parans 是必要的(作为 setter 函数)以及为什么不需要第二个 ko.observable 我将删除这个答案,因为它不需要。
    • 你是对的,这就是为什么给 +1。请不要删除您的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-04
    • 2019-09-15
    • 1970-01-01
    • 2022-01-18
    相关资源
    最近更新 更多