gpt4 book ai didi

knockout.js - 使用 ko.renderTemplate 的插件中的 knockoutjs "Unable to parse bindings"

转载 作者:行者123 更新时间:2023-12-04 20:16:43 24 4
gpt4 key购买 nike

我创建了一个 knockoutjs 插件,该插件最终在其绑定(bind)处理程序的“更新”部分中使用了 ko.renderTemplate。该代码会产生预期的输出,但也会引发“无法解析绑定(bind)”错误。

可以在此处找到此问题的重现 http://jsfiddle.net/rhoadsce/VSWK2/在jsfiddle上。

javascript如下:

ko.plugin = function(configuration) {
var self = this;
self.content = configuration.content || '';
};

ko.bindingHandlers.plugin = {
update: function(element, valueAccessor, allBindingsAccessor) {
var viewModel = valueAccessor();

$(element).append('<div id="pluginContainer"></div>');
var $container = $(element).children('#pluginContainer');

ko.renderTemplate("pluginTemplate", viewModel, {}, $container, 'replaceNode');
}
};

$(function () {
var vm = (function() {
var plugin = new ko.plugin({ content: 'test content'});

return {
plugin: plugin
}
})();

ko.applyBindings(vm);
});

html同样简单。
<div data-bind="plugin: plugin"></div>

<script id="pluginTemplate" type="text/html"><span data-bind="text: content"></span></script>

最佳答案

我认为问题在于 KO 正在尝试为 div 的后代应用绑定(bind)(并且它使用 Root View 模型作为上下文来执行此操作,而不是内部插件 VM),但是对 ko.renderTemplate 的调用本身已经将绑定(bind)应用于后代(具有正确的上下文)。

为了防止这种情况,让你的 bindingHandler 的 init 方法返回 { controlsDescendantBindings: true } .这可以防止 KO 尝试应用绑定(bind)。 Here's the updated fiddle .

有关更多信息,请参见此处:http://knockoutjs.com/documentation/custom-bindings-controlling-descendant-bindings.html

关于knockout.js - 使用 ko.renderTemplate 的插件中的 knockoutjs "Unable to parse bindings",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11268863/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com