Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS MVC Razor-如何在多个文件中定义单个控制器?_Javascript_Angularjs_Asp.net Mvc_Razor - Fatal编程技术网

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

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

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

我希望在单独的global 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()呈现的子页面中添加页面特定的项?

您需要将“应用程序”定义为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,但不能访问覆盖,因为它只添加到一个页面上。