javascript - async data fetching and angular library -
"i have following problem: fetch json async rest call , use in existing directives angular library (in case angular-ui-tree , angular-charts).
this simple example angular-ui-tree try explain problem . service:
var mod = angular.module("user.services"); mod.factory("userservice", ["$http", function ($http) { return { getusermenu: function () { //call rest return $http.get('/user/menu').then(function (response) { return response.data; }); } }; }]);
the controller:
var mod = angular.module("admin.controllers"); $scope.menu = []; userservice.getusermenu().then(function(menuresp){ $scope.menu = menuresp; }; $scope.showbody = true; $scope.selecteditem = {}; $scope.options = {}; ...
page (it's fragment):
<div ng-controller="menulistctrl"> <script type="text/ng-template" id="items_renderer.html"> <div ui-tree-handle>... </div> <ol ui-tree-nodes="options" ng-model="item.items"> <li ng-repeat="item in item.submenu" ui-tree-node ng-include="'items_renderer.html'"></li> </ol> </script> <div ui-tree="options"> <ol ui-tree-nodes ng-model="list" > <li ng-repeat="item in menu" ui-tree-node ng-include="'items_renderer.html'"></li> </ol> </div>
when open page tree correctly render have error in console. in angular-ui case error "cannot read property '0' of undefined". think it's because when controller been loading menu var wasn't set.
probably way wrong. think solution render angular-ui-tree fragment after data loading. this:
var mod = angular.module("tnp.admin.controllers"); userservice.getusermenu().then(function(menuresp){ //render tree template menuresp data or append in fragment angular-ui-tree directive menuresp data };
i have problem others libraries. error different think base problem same. can my? how can render fragment menu data? thanks!!!
i don't see why menu
need declared in service. should make sure $scope.menu
set empty array in controller before call service populate it.
Comments
Post a Comment