我在knockoutjs中有一个组件,可以使用javascript graph api从Facebook创建专辑列表。
如何在渲染所有项目后调用函数?
我已经尝试了foreach: {data: items, afterRender: afterItemsLoaded}
- 方法afterItemsLoaded
会在每次渲染所有项目后都被调用。
我尝试使用以下代码:
HTML:
<h1>List: </h1>
<list></list>
使用Javascript:
var countOfItemLoaded = 0;
ko.components.register('list', {
viewModel: function() {
},
template: '<div data-bind="foreach: {data: items, afterRender: afterItemsLoaded}"><div data-bind="text: $data"></div></div>'
});
var viewModel = function() {
var self = this;
self.items = ko.observableArray([]);
$.getJSON("https://graph.facebook.com/410564482402231/albums?fields=photos,name,photos.name", function (result) {
$.each(result.data,function(key, item) {
self.items.push(item.name);
});
});
self.afterItemsLoaded = function() {
countOfItemLoaded = countOfItemLoaded + 1;
alert("Loaded item " + countOfItemLoaded);
}
};
ko.applyBindings(viewModel);
在jsFiddle演示:
答案 0 :(得分:2)
我认为还没有为此添加支持。
请参阅:https://github.com/knockout/knockout/pull/339
在Knockout工作的Ryan Niemeyer几乎在2年前就向其他人提供了这个解决方案 knockoutJS execute callback after foreach finishes rendering