一尘不染

AngularJS接收数据后手动引导

angularjs

我正在尝试从服务器接收数据后手动引导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);
    });

启动后,我需要在应用程序中使用maindatagetMaindata()。因此,我无法(function(){})();bootstrap.js文件上放更紧密的javascript
来保持所有内容的私密性,从而使该功能和变量可供应用程序的其他部分访问。

是否可以将所有内容设为私有,但仍然可以让应用的其他部分访问?


阅读 284

收藏
2020-07-04

共1个答案

一尘不染

您可以将其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;
});
2020-07-04