Javascript AngularJS MVC Razor-如何在多个文件中定义单个控制器?
我有一个MVC应用程序,它有一个主布局,其中有一个@RenderBody(),用于呈现单个页面的主体。在主布局中,我给body标签一个angularjs应用程序名和控制器名 我希望在单独的global angular.js文件中定义控制器。这将共享每个页面都可以利用的通用功能Javascript AngularJS MVC Razor-如何在多个文件中定义单个控制器?,javascript,angularjs,asp.net-mvc,razor,Javascript,Angularjs,Asp.net Mvc,Razor,我有一个MVC应用程序,它有一个主布局,其中有一个@RenderBody(),用于呈现单个页面的主体。在主布局中,我给body标签一个angularjs应用程序名和控制器名 我希望在单独的global angular.js文件中定义控制器。这将共享每个页面都可以利用的通用功能 myApp.controller('myController', ['$scope', '$http', function ($scope, $http) { $scope.sharedFun
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()呈现的子页面中添加页面特定的项?您需要将“应用程序”定义为Angular中的模块,如下所示:
var app = angular.module("app", [myController])
声明的第二部分允许您传入Angular应用程序所依赖的“依赖项”数组。在这种情况下,您的应用程序将包括您的“myController”控制器
然后在html中要执行操作的部分使用此属性:
ng-app="app"
这样做将使您的控制器可用于使用“应用程序”模块的任何页面。您需要将“应用程序”定义为角度模式的模块,如下所示:
var app = angular.module("app", [myController])
声明的第二部分允许您传入Angular应用程序所依赖的“依赖项”数组。在这种情况下,您的应用程序将包括您的“myController”控制器
然后在html中要执行操作的部分使用此属性:
ng-app="app"
这样做将使您的控制器可用于任何使用“应用程序”模块的页面。我通过嵌套ng控制器实现了这一点。第二个控制器继承了第一个控制器的所有功能,我能够覆盖它们并将它们添加到第二个控制器中。我通过嵌套ng控制器实现了这一点。第二个控制器继承了第一个控制器的所有功能,我能够覆盖它们并将它们添加到第二个控制器中。这不是ASP.NET MVC的问题。您需要相应地设置角度代码。请参阅:这与ASP.NET MVC无关。您需要相应地设置角度代码。请参阅:假设我在一个总是被导入的脚本文件中定义了主控制器。我导入它并设置依赖项,就像您为该页面显示的那样。然后,我如何将$scope.showOverlay=false添加到只存在于我所在页面而不是全部页面的控制器?使用该脚本的所有其他页面都可以访问$scope.sharedFunction,但不能访问覆盖,因为它仅添加在一个页面上。因此,假设我在始终导入的脚本文件中定义主控制器。我导入它并设置依赖项,就像您为该页面显示的那样。然后,我如何将$scope.showOverlay=false添加到只存在于我所在页面而不是全部页面的控制器?使用脚本的所有其他页面都可以访问$scope.sharedFunction,但不能访问覆盖,因为它只添加到一个页面上。