0

我正在构建一个可编辑的网格。礼物名称是一个自动建议文本框。

当我选择一个值并尝试检索该值时,它不会显示该值。我的代码在 [这里](http://jsfiddle.net/bhagirathip/x6H8s/38/)

在文本框中选择一个值并单击提交按钮。它应该显示第一个文本框值,但显示为空。

我在哪里犯了错误。

-提前致谢

4

2 回答 2

2

似乎真正的问题是name当您使用 jQuery 的自动完成功能时没有正确更新。您应该更改绑定name

<input data-bind="value: name, valueUpdate: 'blur'" class='tags' />

当元素失去焦点时会发生模糊事件。并且每次它会发生 - KO 将强制绑定以更新值。


KO 文档

价值更新

如果您的绑定还包括一个名为 valueUpdate 的参数,则这定义了 KO 应该使用的其他浏览器事件来检测除了更改事件之外的更改。

于 2012-10-31T09:38:47.783 回答
0

我看着你的小提琴,你在打电话时似乎少了几个括号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 。

于 2012-10-31T08:11:19.710 回答