尝试重置knockout observable时出错

时间:2015-06-25 15:13:12

标签: knockout.js

在搜索互联网时,以下代码作为我的视图模型的一部分应该可以正常工作:

function MyViewModel() {
var self = this;

self.name = ko.observable();
self.displayname = ko.observable();
self.description = ko.observable();

self.save = function () {
    $.post('/My/MVCControler',
        { Name: self.name(), DisplayName: self.displayname(), Description: self.description() },
        function success(data) {

            self.name(null);
            self.displayname(null);
            self.description(null);

            $('#MyDialog').modal('hide');
        });
}
}

但我在Uncaught TypeError: string is not a function收到错误Name: self.name()

最终目标是在表单提交时重置视图模型。我也更喜欢只调用一次ko.applyBindings作为最佳实践。

编辑:经过一个很好的回答后,我意识到this.name是由一个字符串创建的,而不是我的代码。更改变量名称解决了问题。

1 个答案:

答案 0 :(得分:0)

您必须在代码中的其他位置重置 self.name 。您提到您已尝试设置 self.name ='' - 该代码仍在那里吗?因为如果是这样,你将覆盖可观察对象,并将其设置为字符串(因此'string不是函数'的错误消息)。

查看您的代码(或在此处发布其余内容),并确保您没有在其他位置设置 self.name = [anything]