Выполнить некоторую функцию после завершения привязки 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>

Другие вопросы по тегам