Knockout afterRender 每次复制 foreach 块并插入到文档中时都会调用,无论是在 foreach 首次初始化时,还是在以后将新条目添加到关联数组时。如果在使用 foreach 时涉及繁重的逻辑,这可能会很昂贵。
afterAdd — 与 afterRender 类似,不同之处在于它仅在将新条目添加到数组时调用(而不是在 foreach 第一次迭代数组的初始内容时)。 afterAdd 的一个常见用途是调用诸如 jQuery 的 $(domNode).fadeIn() 之类的方法,以便在添加项目时获得动画过渡。
如果您只需要在将“新”项添加到数组后运行代码,请使用 afterAdd。
为避免在将每个项目添加到 UI 后这种昂贵的运行代码形式,请创建一个自定义绑定处理程序以在页面加载后运行。
下面是我用来在 pageLoad 上隐藏表单的一个。当然,您可以通过初始化和更新选项告诉它做您想做的事情。
示例代码:
ko.bindingHandlers.pageLoad = {
init: function (element, valueAccessor, allBindingsAccessor, data, context) {
var value = ko.unwrap(valueAccessor());
$(element).hide(value);
},
update: function (element, valueAccessor, allBindings) {
}};
还可以查看:afterRemove、beforeMove 和 afterMove here!
您选择的元素上的标记:
data-bind="pageLoad: function() { hideForm() }"
javascript代码:
self.hideForm = function () {
$("#form").hide("slide", 500);
};