我有一個問題,即第二次從服務器更新數據時沒有調用init:函數。KnockoutJs - 爲什麼init綁定處理程序只被調用一次?
這有可能發生嗎?
我正在使用映射插件。另一個我不明白的問題是,我是否需要根據這是第一次呼叫還是第二次呼叫來調用映射插件函數?
JS
function ViewMemberPopup(memberId) {
$.get("/People/GetMemberDetails?memberId=" + memberId, function (data) {
viewMemberModel.model = ko.mapping.fromJS(data);
ko.applyBindings(viewMemberModel.model, $("#memberDetailsContainer")[0]);
});
}
// binding handler
ko.bindingHandlers.renderMemberModal = {
init: function (element, valueAccessor, allBindingsAccessor) {
$(element).modal("show");
}
};
HTML: 我用renderMemberModal:真正的結合處理,不知道爲什麼我需要連接到它的屬性。我只需要調用渲染功能...
<div class="modal fade" id="viewMemberModal" data-bind="renderMemberModal: true" style="display: none;">
<div class="modal-header">
<a class="close" href="#">×</a>
<h3>
Member Details</h3>
</div>
<div class="modal-body">
<div data-bind="template: { name: 'memberDetailsTemplate' }">
</div>
</div>
<div class="modal-footer">
<a class="btnx closeModal">Close</a>
</div>
</div>
我使用引導CSS來顯示模式彈出。
只是想經歷和了解的樣品。 ko.mapping.fromJS(dataFromServer,null,viewModel.myData()) - 爲什麼3個參數,我認爲它只需要2?有沒有關於此的文檔? – jaffa
此外,我得到「$數據未定義的錯誤」? http://pastie.org/2766651。 – jaffa
ko.mapping.fromJS可以帶三個參數。第一個是數據,第二個是映射選項,第三個是要更新的對象。如果您正在處理要更新的已映射對象,則可以將其作爲第二個參數傳遞,因爲它不需要再次映射選項,並且會識別出您已經傳遞了已映射的對象而不是映射選項。 –