我正在尝试从服务器接收数据后手动引导AngularJS。
bootstrap.js:
var initInjector = angular.injector(['ng']); var $http = initInjector.get('$http'); var maindata; function bootstrapAngular() { angular.element(document).ready(function() { angular.bootstrap(document, ['app']); }); } function getMainData() { return maindata; } $http .get('/data') .then(function (response) { maindata = response.data; bootstrapAngular(); }, function (error) { console.log(error); });
启动后,我需要在应用程序中使用maindata或getMaindata()。因此,我无法(function(){})();在bootstrap.js文件上放更紧密的javascript 来保持所有内容的私密性,从而使该功能和变量可供应用程序的其他部分访问。
maindata
getMaindata()
(function(){})();
bootstrap.js
是否可以将所有内容设为私有,但仍然可以让应用的其他部分访问?
您可以将其maindata作为可注射剂公开以使其在您的应用中可用:
$http .get('/data') .then(function (response) { maindata = response.data; angular.module("app").value("MainData", maindata); bootstrapAngular(); }, function (error) { console.log(error); });
然后可以将其注入控制器或服务中:
.controller("MainCtrl", function($scope, MainData){ $scope.data = MainData; });