Выполнить некоторую функцию после завершения привязки rivets.js
Я немного знаком с заклепками и не до конца понимаю, поэтому натолкнулся на что-то, что кажется довольно простым делом, но я не смог этого сделать.
Я пытаюсь выполнить JQuery, который работает только после заклепки закончили связывать все? (это $(). каждый, который включает событие click в каждой строке, созданной после того, как заклепки связывают список с элементом li-rv-each)
Это не работает, но если я попытаюсь вручную вызвать функцию после того, как страницы закончили загрузку и после того, как заклепки закончили связывать (на консоли браузера), то все работает отлично.
1 ответ
Вы можете обернуть код, который вы хотите выполнить, после того, как привязка заклепок выполнена в течение тайм-аута 0, чтобы он был перенесен в конец стека вызовов и был выполнен после завершения существующих задач.
var bigArr = [];
for (var i = 0; i < 20000; i++) {
/* ADJUST THIS untill you see the difference
WARNING: Keep it under control
*/
bigArr.push({
count: i
});
}
rivets.bind($("div"), { // bind rivets
arr: bigArr
});
setTimeout(function() {
console.log("rivets done it's thing!"); // executed when binding is done
}, 0);
console.log("Rivets..? Who!"); // executed before elements are rendered
div {
display: inline-block;
margin: 5px;
padding: 5px;
background: royalblue;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/rivets/0.7.1/rivets.bundled.min.js"></script>
<div rv-each-item="arr">{item.count}</div>