什么是 Knockout 自定义绑定 "after" 变量?
What is Knockout custom binding "after" variable?
我正在为某些项目使用 knockout 和 ASP.NET MVC。
我正在使用以下 bindingHandler
of knockout
ko.bindingHandlers.select2 = {
after: ["options", "value", "selectedOptions"],
init: function (el, valueAccessor, allBindingsAccessor, viewModel) {
// no explicit reference to the 'after' variable
},
update: function (el, valueAccessor, allBindingsAccessor, viewModel) {
// no explicit reference to the 'after' variable
}
}
我从 and I modified it little.
It is basically a custom binding handler
for the Select2 plugin 那里得到了这个代码。
问题
我只想知道 after: ["options", "value", "selectedOptions"],
在这里是什么意思。 init
或 update
函数中的任何地方都没有引用此变量。
这个变量在这种情况下有什么意义吗?或者这是一条指令,使其在完成 [options
、value
、selectedOptions
] 绑定后执行此自定义绑定?
备注
custom binding 的文档没有提到这个变量。
你是对的,它似乎没有记录。深入研究 KO source code 向我们展示了这一点:
// First add dependencies (if any) of the current binding
if (binding['after']) {
cyclicDependencyStack.push(bindingKey);
ko.utils.arrayForEach(binding['after'], function(bindingDependencyKey) {
if (bindings[bindingDependencyKey]) {
if (ko.utils.arrayIndexOf(cyclicDependencyStack, bindingDependencyKey) !== -1) {
throw Error("Cannot combine the following bindings, because they have a cyclic dependency: " + cyclicDependencyStack.join(", "));
} else {
pushBinding(bindingDependencyKey);
}
}
});
cyclicDependencyStack.length--;
}
您的假设似乎是正确的。 KO 正在构建依赖绑定列表,在当前绑定可以 运行 之前必须 运行。内置 value and selectedOptions 绑定利用了这个关键字。
这是discussion on implementation from the Knockout Github
这里是相关的Whosebug answer
请参阅该答案中的 JSFiddle 以获取示例代码。
我正在为某些项目使用 knockout 和 ASP.NET MVC。
我正在使用以下 bindingHandler
of knockout
ko.bindingHandlers.select2 = {
after: ["options", "value", "selectedOptions"],
init: function (el, valueAccessor, allBindingsAccessor, viewModel) {
// no explicit reference to the 'after' variable
},
update: function (el, valueAccessor, allBindingsAccessor, viewModel) {
// no explicit reference to the 'after' variable
}
}
我从
It is basically a custom binding handler
for the Select2 plugin 那里得到了这个代码。
问题
我只想知道 after: ["options", "value", "selectedOptions"],
在这里是什么意思。 init
或 update
函数中的任何地方都没有引用此变量。
这个变量在这种情况下有什么意义吗?或者这是一条指令,使其在完成 [options
、value
、selectedOptions
] 绑定后执行此自定义绑定?
备注 custom binding 的文档没有提到这个变量。
你是对的,它似乎没有记录。深入研究 KO source code 向我们展示了这一点:
// First add dependencies (if any) of the current binding
if (binding['after']) {
cyclicDependencyStack.push(bindingKey);
ko.utils.arrayForEach(binding['after'], function(bindingDependencyKey) {
if (bindings[bindingDependencyKey]) {
if (ko.utils.arrayIndexOf(cyclicDependencyStack, bindingDependencyKey) !== -1) {
throw Error("Cannot combine the following bindings, because they have a cyclic dependency: " + cyclicDependencyStack.join(", "));
} else {
pushBinding(bindingDependencyKey);
}
}
});
cyclicDependencyStack.length--;
}
您的假设似乎是正确的。 KO 正在构建依赖绑定列表,在当前绑定可以 运行 之前必须 运行。内置 value and selectedOptions 绑定利用了这个关键字。
这是discussion on implementation from the Knockout Github
这里是相关的Whosebug answer
请参阅该答案中的 JSFiddle 以获取示例代码。