我正在构建一个可编辑的网格。礼物名称是一个自动建议文本框。
当我选择一个值并尝试检索该值时,它不会显示该值。我的代码在 [这里](http://jsfiddle.net/bhagirathip/x6H8s/38/)
在文本框中选择一个值并单击提交按钮。它应该显示第一个文本框值,但显示为空。
我在哪里犯了错误。
-提前致谢
我正在构建一个可编辑的网格。礼物名称是一个自动建议文本框。
当我选择一个值并尝试检索该值时,它不会显示该值。我的代码在 [这里](http://jsfiddle.net/bhagirathip/x6H8s/38/)
在文本框中选择一个值并单击提交按钮。它应该显示第一个文本框值,但显示为空。
我在哪里犯了错误。
-提前致谢
似乎真正的问题是name
当您使用 jQuery 的自动完成功能时没有正确更新。您应该更改绑定name
:
<input data-bind="value: name, valueUpdate: 'blur'" class='tags' />
当元素失去焦点时会发生模糊事件。并且每次它会发生 - KO 将强制绑定以更新值。
价值更新
如果您的绑定还包括一个名为 valueUpdate 的参数,则这定义了 KO 应该使用的其他浏览器事件来检测除了更改事件之外的更改。
我看着你的小提琴,你在打电话时似乎少了几个括号self.gifts()
。
这个:
self.save = function () {
var abc = $.parseJSON(ko.toJSON({ gifts: self.gifts }));
alert(abc.gifts[0].name);
};
应该:
var abc = $.parseJSON(ko.toJSON({ gifts: self.gifts() }));
最后加上括号。
您必须记住,它self.gifts = ko.observableArray(gifts);
返回包装在函数中的值,因此为了访问该值,您需要调用self.gifts()
.
运行此示例将显示带有空字符串的警报,因为您gifts
使用空名称值初始化了数组。
如果您在此处为名称添加值:
var viewModel = new GiftModel([
{ name: "", price: "" }
]);
然后,您将在警报框中显示该名称。在这里查看更新的 jsfiddle 。