在搜索互联网时,以下代码作为我的视图模型的一部分应该可以正常工作:
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是由一个字符串创建的,而不是我的代码。更改变量名称解决了问题。
答案 0 :(得分:0)
您必须在代码中的其他位置重置 self.name 。您提到您已尝试设置 self.name ='' - 该代码仍在那里吗?因为如果是这样,你将覆盖可观察对象,并将其设置为字符串(因此'string不是函数'的错误消息)。
查看您的代码(或在此处发布其余内容),并确保您没有在其他位置设置 self.name = [anything] 。