AngularJs在控制器初始化之前从$ http获取数据
问题描述:
我有一个简单的angularjs应用程序,其中我想运行一个滑块,滑块元素来自$ http请求。
这里是参考代码:
var mainApp = angular.module("myapp", []);
mainApp.run(['$rootScope', '$http',
function($rootScope, $http) {
$http.post('process.php?ajax_type=getChild').success(function(data) {
if (data.success) {
console.log(data.child); // data received...
$rootScope.categories = data.child;
}
});
}]);
mainApp.controller('gridChildController', function($scope, $http, $rootScope) {
console.log($rootScope.categories); // this is also null....
$scope.brands = $rootScope.categories;
$scope.finished = function(){
jQuery('.brand_slider').iosSlider({
desktopClickDrag: true,
snapToChildren: true,
infiniteSlider: false,
navNextSelector: '.brands-next',
navPrevSelector: '.brands-prev',
lastSlideOffset: 3,
onSlideChange: function (args) {
}
});
};
});
这里是模板文件的代码:
<div ng-app="myapp">
<div ng-controller="gridChildController" class="brand_slider" >
<div class='slider'>
<div class="slide col-md-5ths col-sm-4 col-xs-12 text-center" ng-repeat="x in brands" ng-init="$last && finished()">
<a href="{{x.link}}"><img class="img-responsive center-block" ng-src="{{x.image}}" title="{{x.title}}" alt="{{x.title}}"></a>
</div>
</div>
</div>
</div>
当我运行这段代码,我从$数据HTTP但NG-重复不起作用,并且在控制器中我得到数据为空。
答
如果你把东西放在$rootScope
上,它也可以在子范围内使用。如果你使用的角度路由
ng-repeat="x in categories"
使用解析:这样你就可以直接绑定到
categories
(不需要将它复制到$scope.brands
)。 –您不是在控制器中注入'$ rootScope',并且您没有在视图中初始化控制器。 – Dieterg
@Dieterg绝对我在代码复制粘贴中犯了一些错误。谢谢,检查它我有编辑代码。 –