与其尝试做两件不同的事情,不如不做以下事情:
- 使用将保存内容数据的可观察属性定义您的视图模型。
- 在初始页面加载时,使用您的预渲染数据初始化 observable 属性(也许从隐藏字段中检索?)。
- 使用您的模板将您的内容元素绑定到可观察对象。
然后,当您发出 ajax 请求时,只需使用从您的请求中检索到的数据更新 observable 属性中的数据,UI 应该会自动更新。
编辑:
这是一个演示该概念的快速jsFiddle(注释 javascript 以模拟禁用的 javascript)。
<input id="initialstate" type="hidden" value="4,5,6" />
<ul id="content" data-bind="template: { name: 'item-template', foreach:data }">
<li>1</li>
<li>2</li>
<li>3</li>
</ul>
<script type="text/html" id="item-template">
<li data-bind="text: $data"></li>
</script>
var viewModel = (function()
{
var self = {};
self.data = {};
function init() {
$('#content').empty();
self.data = ko.observableArray($('#initialstate').val().split(','));
}
init();
return self;
}());
ko.applyBindings(viewModel);