0
我想创建一个可选列表,其中每个列表元素都来自ajax请求。 这工作正常。但是我无法解决的问题是,选定的列表元素在更新后不会保持选中状态(新的Ajax请求)。其他一切按预期工作。 感谢您的帮助。未选中列表元素(通过ajax请求更新后)
这里是我的html代码:
<!DOCTYPE html>
<html>
<head>
<title>Sample</title>
<script src='/sm/scripts/jquery.js' type='text/javascript'></script>
<script src='/sm/scripts/knockout.js' type='text/javascript'></script>
<script src='/sm/scripts/knockout.mapping.js' type='text/javascript'></script>
</head>
<body>
<select data-bind="options:SiteData , selectedOptions:selectedSiteData , optionsText: 'SiteName'" size="5" multiple="true"></select>
<pre data-bind="text: ko.toJSON($root.selectedSiteData, null, 2)"></pre>
<script src='/sm/viewModel.js' type='text/javascript'></script>
</body>
</html>
这里是我的viewmodel.js的代码:
function viewModel(){
var self = this;
this.SiteData = ko.mapping.fromJSON([{}]);
self.selectedSiteData = ko.observableArray();
this.refresh = function() {
$.getJSON("/sm/allsites", function(data) {
ko.mapping.fromJS(data, self.SiteData);
});
};
self.refresh();
setInterval(self.refresh, 3000);
};
ko.applyBindings(new viewModel());
谢谢你解释我的问题:)。我现在解决了它。我发现在映射插件中已经有了解决我的问题的解决方案。我指定我的ID为键值: 'var mapping = { key:function(data){ return ko.utils.unwrapObservable(data.idSites); } }; ko.applyBindings(new viewModel()); ' – sm1988