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

问题描述 投票:0回答:3

我试图将变量传递给角度js配置,这是我的js应用程序:

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");
    }]);

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

我的意思是这一行:

ssSideNavSectionsProvider.initWithSections("Get getRequirment function in controller");
javascript angularjs angularjs-material
3个回答
0
投票

有一种肮脏的方式来做到这一点:

你可以把它放在你的配置中

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

并在您的控制器中设置

$rootScope.variable

0
投票

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

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

ssSideNavSections.sections.push(yourSection);

0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.