0
everyone。我正在閱讀Knockout js doc here,這涉及到控制後代綁定。該場景是我使用applyBindingsToDescendants將後代元素與當前綁定上下文進行綁定,然後嘗試使用$ data.property_name訪問該後代元素的綁定上下文中的屬性,它僅在property_name已經在原始binding_context,如果它稍後添加,那麼$ data.property_name將不起作用,但如果我刪除$ data,它將起作用,請查看此jsfiddle example。誰能告訴我爲什麼它的行爲?
HTML
<div data-bind="addBindingProperties: {addedProp: 'ADDED PROPERTY'}">
<div>Existing property accessible via $data: <span data-bind="text: $data.existingProp"></span></div>
<div>Added property not accessible via $data: <span data-bind="text: $data.addedProp"></span></div>
<div>Added property accessible by removing $data: <span data-bind="text: addedProp"></span></div>
</div>
的JavaScript
ko.bindingHandlers.addBindingProperties = {
init: function(element, valueAccessor, allBindings, viewModel, bindingContext) {
ko.utils.extend(bindingContext, valueAccessor());
ko.applyBindingsToDescendants(bindingContext, element);
return {controlsDescendantBindings: true};
}
};
ko.applyBindings({
existingProp: 'EXISTING PROPERTY'
});
結果
Existing property accessible via $data: EXISTING PROPERTY
Added property not accessible via $data:
Added property accessible by removing $data: ADDED PROPERTY