2016-10-16 2 views
0

Я использую https://github.com/ezraroi/ngJsTree, и я столкнулся с следующей проблемой.угловой js, ng-модель не готова для сторонней директивы

Моя ng-модель - это запрос AJAX, и когда мой контроллер срабатывает, данные еще не готовы, поэтому ничего не отображает.

<div ng-controller='myCtrl'> 
    <div js-tree="treeConfig" ng-model="treeData" should-apply="ignoreModelChanges()" tree="treeInstance" tree-events="ready:readyCB;create_node:createNodeCB"></div> 
</div> 

https://plnkr.co/edit/IRaqvd0DPcqkxgo0xoqa?p=preview

+0

Если вы используете '$ http' для своих серверных вызовов, директива должна корректно обновляться при возврате ответа. возможно, ваша проблема связана с тем, как происходят ваши вызовы. Отображение этого кода поможет немного сфокусировать проблему, чтобы найти решение. – Claies

+0

также, 'ignoreModelChanges()' кажется странной штукой для пары с запросом '$ http', где модель определенно изменится; вы пытались выяснить, работает ли это при его удалении? – Claies

+0

вот мой pluker https://plnkr.co/edit/fCrupsxDMprHdLCocZIe?p=preview –

ответ

0

В зависимости от структуры вашего приложения, вы можете иметь несколько альтернатив, чтобы справиться с этой ситуацией. Создайте службу, которая отвечает за чтение данных. Затем вы можете сделать одно из следующих действий:

  1. грим маршрутизатор ждать, пока показание не будет решена до того навигации к просмотру. Вот связанный с этим вопрос SO: AngularJS $http.get with resolve

  2. добавить слушателя событий к контроллеру и сделать услугу для испускания/вещания, когда данные готовы.

В обоих случаях вы можете читать данные со службы.

+0

любой пример bulltet 1 и 2? –

+0

добавил ссылку на вопрос SO о разрешении данных в routeProvider. Что касается второго примера - я бы пошел на угловую документацию, но есть также связанный вопрос SO. (Http://stackoverflow.com/questions/14502006/working-with-scope-emit-and-on) –

Смежные вопросы