如何在angularjs中传递控制器和配置之间的值

时间:2016-09-23 17:31:29

标签: javascript angularjs angularjs-material

我正在尝试将变量传递给angular js config, 这是我的js app:

var app = angular.module('myApp', ['ngMaterial', 'sasrio.angular-material-sidenav', 'ui.router']);
app.controller('baseController', function ($scope, $mdDialog, $mdMedia, $http, $rootScope, $timeout, $mdToast, $mdSidenav, ssSideNav) {
    $scope.menu = ssSideNav;
    $scope.getRequirment = function () {
        $http.get("site/requirment",
                {params: {dir: $scope.currentPath}})
                .then(function (response) {
                   return response.data;
                });
    };
    $scope.getRequirment();
});
app.config(['$mdThemingProvider', '$locationProvider', 'ssSideNavSectionsProvider', '$stateProvider',
    function ($mdThemingProvider, $locationProvider, ssSideNavSectionsProvider, $stateProvider) {
        $mdThemingProvider.theme('default')
                .primaryPalette('deep-orange')
                .accentPalette('deep-orange');
        ssSideNavSectionsProvider.initWithTheme($mdThemingProvider);
        ssSideNavSectionsProvider.initWithSections("Get getRequirment function in controller");
    }]);

如何从config中调用控制器中的函数?

我的意思是这一行:

ssSideNavSectionsProvider.initWithSections("Get getRequirment function in controller");

3 个答案:

答案 0 :(得分:0)

有一种方法可以做到这一点:

你可以把它放在你的配置

$rootScope.$watch("variable", function(n, o) {
// assign n value
})

并在您的控制器中设置

$rootScope.variable

答案 1 :(得分:0)

这是不可能的,控制器在运行阶段执行,配置在配置阶段。

我稍微研究了一下源代码,作为服务变量可用的部分,您可以尝试从控制器添加它们:

ssSideNavSections.sections.push(yourSection);

答案 2 :(得分:0)

您可以在配置块中设置常量,然后通过将其注入控制器来访问该常量。

来源:https://www.agiliq.com/blog/2017/04/what-when-and-how-angularjs-configuration-blocks/