如何knockout.js AfterRender阶段的工作?(How does knockout.

2019-09-26 07:28发布

的一个AfterRender knockout.js的文档,我不清楚。 什么是它的目的和我们有如何使用它? 有哪些主要用途的例子吗?

Answer 1:

敲除AfterRender阶段在每次的foreach块被复制并插入到文档时调用,当两者的foreach首先初始化,并且当新的条目被稍后添加到相关联的阵列。 当有同时使用foreach参与重逻辑这可能是昂贵的。

afterAdd -就像一个AfterRender,除了它是只有当新的条目添加到您的数组引用(而不是当在你的阵列的初始内容的foreach第一迭代)。 对于afterAdd一个常见的用途是调用如jQuery的$(れ).fadeIn()的方法,让你得到过场动画时添加的项目。

使用afterAdd如果你只需要代码后,“新”项目已被添加到阵列中运行。

为了避免每个项目添加到UI后运行的代码的这种昂贵的形式,创建一个自定义绑定处理程序的页面加载后运行。

下面是一个我用来隐藏在页面加载的形式。 当然,你可以告诉它你想进行初始化和更新选项是什么。

示例代码:

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

},
update: function (element, valueAccessor, allBindings) {     
}};

另外,请查阅:afterRemove,beforeMoveafterMove 这里 !

标记所选元素:

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

JavaScript代码:

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


文章来源: How does knockout.js afterRender work?