У меня очень маленькая веб-страница с emberjs, где я хочу показать для них список элементов и открытые карты и другую карту для выбранного элемента. Нечто подобное:выполнить действие (функция javascript) после отображения шаблона ember
<script type="text/x-handlebars" id="list">
<div class="list">
<div id="list_map"></div>
</div>
{{outlet}}
</script>
<script type="text/x-handlebars" id="list/item" >
<div class="item">
<div id="item_map"></div>
</div>
</script>
<script>
function showListMap() {
listMap = new ol.Map({target:'list_map'});
}
function showItemMap() {
itemMap = new ol.Map({target:'item_map'});
}
</script>
Там нет никаких проблем, чтобы отобразить карту для списка:
model: function(params) {
var content = [];
var url = 'http://localhost:8080/app/list';
$.ajax({
url: url,
success: function(surveys) {
content.pushObjects(surveys);
showListMap();
}
});
return content;
}
и у меня есть действие в контроллере элемента, который выполняется при открытии выбранного элемента, но если я пытаюсь создайте карту элементов там (в действии контроллеров) она терпит неудачу (afaik, потому что в этот момент в DOM нет такого div). Итак, если я могу выполнить действие или свою функцию после того, как div уже добавляет в DOM, он должен работать. И вопрос будет, как выполнить что-то после того, как шаблон добавлен в DOM, или это совершенно неправильный способ сделать такие вещи (чем то, что было бы правильным способом ember)?
Вы избили меня! :) Это хорошая статья в блоге, которую я нашел, которая помогла мне разогнать цикл запуска Ember: http://ember.zone/a-50000-foot-overview-of-the-ember-js-run-loop/ – rog
@rog Наверное, у меня есть следующий. :) Это также хороший ресурс для цикла запуска https://github.com/eoinkelly/ember-runloop-handbook – blessenm
«Ember.run.schedule ('afterRender', showItemMap); в получении функции модели сделал трюк, не уверен, что это лучший способ, но он работает. – Dainius