从控制器定义外部将功能添加到控制器作用域

时间:2018-07-28 23:20:26

标签: angularjs angularjs-controller

我在整个网站上都激活了AngularJS材料。我在每个页面上都有控制器定义块,并根据每个页面的必要性填充控制器:

<script type="text/javascript">
app.controller('myCtrl', function($scope, $http, $mdSidenav, $mdDialog, $anyPageSpecificDependency) {

    //Page-specific functions and values

});
</script>

我有一个sidenav切换功能,需要在每个页面上使用。不必在每个页面的控制器中手动定义sidenav切换功能,我想将其添加到底部包含PHP文件的一段代码中,尽管我不知道该怎么做。另外,我需要切换功能来处理$mdSidenav依赖性,这是主控制器的一部分。

我希望能够做到以下几点:

<script type="text/javascript">
app.controller('myCtrl', function($scope, $http, $mdSidenav, $mdDialog, $anyPageSpecificDependency) {

    //Page-specific functions and values

});
</script>

//The following is imported from an include file
<script type="text/javascript">
app.controller('myCtrl', function($scope, $mdSidenav) {

    $scope.toggleSidenav = function() {
        $mdSidenav('sidenav').toggle();
    };

});
</script>

尽管我不能这样做,因为当我第二次定义控制器时,它将完全替换第一个控制器。

什么是最好的解决方案?

谢谢!

1 个答案:

答案 0 :(得分:0)

我的建议似乎有用,因此在这里作为答案:

您可以利用模块声明中可用的run()方法来连接$rootScope上的属性(例如,边栏切换调用)。这些属性将在您定义的每个控制器范围内可用,因此无需进行任何进一步的显式绑定。

Here's a demonstration of the approach.

相关问题