afterRender如何运作knockout.js?

关于knockout.js的afterRender的文档对我来说并不清楚。 它的目的是什么,我们如何使用它? 有哪些主要用法示例?

每次foreach块被复制并插入到文档中时都会调用Knockout afterRender ,无论是在foreach首次初始化时,还是在以后将新条目添加到关联数组时。 当使用foreach时涉及重度逻辑时,这可能是昂贵的。

afterAdd – 就像afterRender一样,只有当新的条目添加到你的数组时才被调用(而不是在foreach首次迭代你的数组的初始内容时)。 afterAdd的一个常见用法是调用jQuery的$(domNode).fadeIn()等方法,以便在添加项目时获得动画转换。

如果只需要在将“NEW”项添加到数组后运行代码,请使用afterAdd

要在每个项目添加到UI后避免使用这种昂贵的运行代码forms,请创建一个自定义绑定处理程序,以便在加载页面后运行。

下面是我用来隐藏pageLoad上的表单。 当然,您可以通过初始化和更新选项告诉它做您想做的事情。

示例代码:

ko.bindingHandlers.pageLoad = { init: function (element, valueAccessor, allBindingsAccessor, data, context) { var value = ko.unwrap(valueAccessor()); $(element).hide(value); }, update: function (element, valueAccessor, allBindings) { }}; 

还可以看看: afterRemovebeforeMoveafterMove here !

所选元素的标记:

 data-bind="pageLoad: function() { hideForm() }" 

javascript代码:

 self.hideForm = function () { $("#form").hide("slide", 500); };