根据AngularJS的教程,控制器功能只是位于全局范围内。
http://docs.angularjs.org/tutorial/step_04
控制器功能本身是自动解析为封装范围还是驻留在全局范围内?我知道他们已经传递了对自己的$
scope的引用,但是看来函数本身只是位于全局范围内。显然,这可能会带来很多问题,而且我已经通过经验和教育学到了封装的方法。此外,如果它们确实存在于全球范围内,将它们封装在这样的要引用的对象中是否不是最佳实践?
:
Object.functionName();
而不是这样:
functionName();
以防止因全球范围的污染而发生的问题(即,覆盖功能等)。
AngularJS支持两种注册控制器功能的方法-
作为全局可访问的功能(您可以在上述教程中看到此形式)或作为模块的一部分(形成一种名称空间)。有关模块的更多信息,请参见:http
:
//docs.angularjs.org/guide/module,但总而言之,可以在模块中注册一个控制器,如下所示:
angular.module('[module name]', []).controller('PhoneListCtrl', function($scope) {
$scope.phones = [..];
$scope.orderProp = 'age';
});
AngularJS在许多示例中都使用了一种简短的全局函数声明控制器的形式,但是尽管 这种形式适合用于快速采样,但是它不应该在实际应用中使用 。
简而言之:AngularJS使得正确封装控制器功能成为可能,但也公开了一种将它们声明为全局函数的简单,快速和肮脏的方式。
问题内容: 我正在使用angularjs编写示例应用程序。我在chrome浏览器上遇到以下错误。 错误是 错误:[ng:areq] http://errors.angularjs.org/1.3.0-beta.17/ng/areq?p0=ContactController&p1=not%20a%20function%2C%20got%20undefined 呈现为 参数“ ContactContr
问题内容: 我正在使用angularjs编写示例应用程序。我在chrome浏览器上遇到以下错误。 错误是 错误:[ng:areq] http://errors.angularjs.org/1.3.0-beta.17/ng/areq?p0=ContactController&p1=not%20a%20function%2C%20got%20undefined 呈现为 参数“ ContactContr
我想要一些关于如何实现以下目标的建议。我不提供代码,因为我的问题是理论上的,但应要求我可以。所以情况是这样的: 我有多个控制器,每个控制器都可以抛出XYException 我有一个@ControllerAdvice类,其中有一个@ExceptionHandler监视XYExceptions。当它发生时,它打印出“xy”。 在一个(且仅有一个)控制器中,当抛出XYException时,我希望执行一些
控制器定义 ThinkCMF5的控制器完全按 TP5的控制器用法来,但 CMF 封装了几个重要控制器基类,为了更方便开发者,我们建议如果没有特殊需求,自己创建的控制器请最好继承一个基类控制器; 用于 WEB 项目的基类控制器有四个,分别是:BaseController,HomeBaseController,UserBaseController,AdminBaseController 继承关系 th
控制器定义 ThinkCMF6.0的控制器完全按 TP6.0的控制器用法来,但 CMF 封装了几个重要控制器基类,为了更方便开发者,我们建议如果没有特殊需求,自己创建的控制器请最好继承一个基类控制器; 用于 WEB 项目的基类控制器有四个,分别是:BaseController,HomeBaseController,UserBaseController,AdminBaseController, Re
控制器定义 控制器文件通常放在application/module/controller下面,类名和文件名保持大小写一致,并采用驼峰命名(首字母大写)。 一个典型的控制器类定义如下: <?php namespace app\index\controller; use think\Controller; class Index extends Controller { public fu