knockout.js afterRender是如何工作的?

时间:2017-06-20 01:49:13

标签: jquery ajax knockout.js

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

1 个答案:

答案 0 :(得分:0)

每次foreach块复制并插入到文档中时,都会调用Knockout afterRender ,无论是在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);
};