AngularJS MVC Razor - 如何在多个文件中定义单个控制器?

时间:2017-03-06 19:05:53

标签: javascript angularjs asp.net-mvc razor

我有一个MVC应用程序,它有一个主布局,里面有一个@RenderBody(),它呈现了单个页面的主体。在主布局中,我给body标签一个angularjs app名称和控制器名称。

我希望控制器在一个单独的全局angular.js文件中定义。这将分享每个页面可以利用的常用功能。

 myApp.controller('myController', ['$scope', '$http', function ($scope, $http) {    
          $scope.sharedFunction = //...shared function stuff
})';

我还想在MVC的子页面中添加特定的范围函数和变量。当我到达子页面时,我相信如果我使用相同的语法,我最终会重新定义控制器。

myApp.controller('myController', ['$scope', '$http', function ($scope, $http) {    
      $scope.showOverlay = false;
}]);

我怎样才能使它在主体中定义的相同控制器获取在使用@RenderBody()呈现的子页面中添加到页面的特定项目?

2 个答案:

答案 0 :(得分:0)

您需要定义自己的应用程序'作为Angular中的一个模块,如下所示:

var app = angular.module("app", [myController])

声明的第二部分允许您传递一系列依赖关系'您的Angular应用依赖于此。在这种情况下,您的应用将包含您的“我的控制器”。控制器

然后在您希望Angular采取行动的html部分使用此属性:

ng-app="app"

执行此操作会使您的控制器可用于使用您的应用程序的任何页面。模块。

答案 1 :(得分:0)

我通过嵌套ng-controllers来实现这一点。第二个控制器继承了所有第一个控制器功能,我能够覆盖它们并在第二个控制器中添加它们。