gpt4 book ai didi

jQuery 自动完成和 knockoutjs 可观察数组

转载 作者:行者123 更新时间:2023-12-01 04:20:06 25 4
gpt4 key购买 nike

当我使用jquery自动完成功能并选择一些可能的值时,尝试更新knockoutjs生成的列表。但是当我在 Select 方法中调用 addItem 函数时,列表不会更新。预期的行为是将所选项目值添加到 Knockoutjs 项目数组中。

MVC3 示例 View :

<input type="text" id="Name"/>

<h4>Items</h4>
<ul data-bind="foreach: items">
<li>
<span data-bind="text: $index"></span>:
<span data-bind="text: name"></span>
<span data-bind="text: code"></span>
<a href="#" data-bind="click: $parent.removeItem">Remove</a>
</li>
</ul>

<script type="text/javascript">
$(function () {
var appViewModel = new AppViewModel();
function AppViewModel() {
var self = this;

self.items = ko.observableArray([]);

self.addItem = function (name, code) {
self.items.push({ name: name, code: code });
};

self.removeItem = function () {
self.items.remove(this);
};
}

$('#Name').autocomplete({
minLength: 1,
delay: 500,
source: function (request, response) {
$.ajax({
type: "POST",
url: "/Home/SearchItems",
dataType: "json",
data: { searchText: request.term },
success: function (data) {
if (data != undefined) {
response($.map(data, function (item) {
return {
label: item.Name,
value: item.Name,
code: item.Code
};
}));
}
}
});
},
select: function (event, ui) {
appViewModel.addItem(ui.item.value, ui.item.code);
}
});

ko.applyBindings(new AppViewModel());
});
</script>

最佳答案

这是一个工作版本:http://jsfiddle.net/jearles/vya7V/

您的问题是您在 ko.applyBindings 语句中实例化一个新的 AppViewModel,而不是传入您之前实例化并在 中使用的 appViewModel >选择

关于jQuery 自动完成和 knockoutjs 可观察数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11483151/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com