【发布时间】:2012-01-11 08:32:21
【问题描述】:
以下 java 脚本定义了具有属性“text”和函数“save”的 MyViewModel 对象。
<script type="text/javascript">
function MyViewModel() {
this.text = ko.observable('');
}
MyViewModel.prototype.save = function () {
alert(this.text()); // Works fine
var data = ko.ToJSON(this); // Error: Object doesn't support this property or method ?
$.ajax({
type: 'POST',
url: '/Person/Save',
data: data,
contentType: 'application/json',
success: function (data) {
alert(data);
}
});
};
</script>
<script type="text/javascript">
$(function () {
var viewModel = new MyViewModel()
ko.applyBindings(viewModel);
});
</script>
并定义了以下按钮:
<button data-bind="click: save">SAVE</button>
点击按钮时的结果:
- 使用 this.text() 访问属性可以正常工作
- 将 java-script 对象转换为 JSON 对象:ko.ToJSON(this) 不起作用 并抛出错误:“错误:对象不支持此属性或 方法”
可能是一些微不足道的东西丢失或错误,但我看不到。有什么建议吗?
【问题讨论】:
-
这是一个很好的使用模式——如果你使用
toJSON而不是ToJSON,它会起作用(Knockout完全支持这种模式,你只是在你的代码中有错字)。跨度>
标签: knockout.js knockout-mapping-plugin