dkn*_*ack 9 javascript knockout-mapping-plugin knockout.js
ko.mapping.fromJS(myObject)为viewModel.如果我使用ko.applyBindings(viewModel);它完美更新ui.但它再次增加了相同的事件.因此,如果用户单击该按钮,则会触发事件两次,第三次,依此类推.
var viewModel;
function update()
{
$.ajax({
url: '...',
type: "GET",
statusCode: {
200: function (data) {
viewModel = ko.mapping.fromJS(data);
ko.applyBindings(viewModel);
}
}
});
}
// first call after page load
update();
// user click
$("#myButton").click(function() {
update();
});
Run Code Online (Sandbox Code Playgroud)
Steve Greatrex您可以发布自定义绑定实现吗?
ko.bindingHandlers.domBinding = {
init: function (element, valueAccessor, allBindingsAccessor, viewModel) {
viewModel.domElement = element;
},
update: function (element, valueAccessor, allBindingsAccessor, viewModel) {
viewModel.domElement = element;
},
};
Run Code Online (Sandbox Code Playgroud)
Ste*_*rex 10
如果查看映射文档中的"指定更新目标",则可以指定映射的目标.
这应该意味着你可以说:
if (!viewModel)
viewModel = ko.mapping.fromJS(data);
else
ko.mapping.fromJS(data, {}, viewModel);
Run Code Online (Sandbox Code Playgroud)
这样,您将在初始加载时创建视图模型,然后为任何后续加载更新该视图模型.
| 归档时间: |
|
| 查看次数: |
4925 次 |
| 最近记录: |