我有一个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()呈现的子页面中添加到页面的特定项目?
答案 0 :(得分:0)
您需要定义自己的应用程序'作为Angular中的一个模块,如下所示:
var app = angular.module("app", [myController])
声明的第二部分允许您传递一系列依赖关系'您的Angular应用依赖于此。在这种情况下,您的应用将包含您的“我的控制器”。控制器
然后在您希望Angular采取行动的html部分使用此属性:
ng-app="app"
执行此操作会使您的控制器可用于使用您的应用程序的任何页面。模块。
答案 1 :(得分:0)
我通过嵌套ng-controllers来实现这一点。第二个控制器继承了所有第一个控制器功能,我能够覆盖它们并在第二个控制器中添加它们。