【发布时间】:2016-08-02 03:59:16
【问题描述】:
在 Angular Material Starter App 中,定义了一个“用户控制器”而不注入 $scope 服务。
所以在构造函数中,变量被创建为This对象的属性:
function UserController( userService, $mdSidenav, $mdBottomSheet, $timeout, $log )
{
var self = this;
self.selected = null;
self.users = [ ];
self.selectUser = selectUser;
self.toggleList = toggleUsersList;
self.makeContact = makeContact;
但是,在 self.selectUser 函数中,数组 self.users 的值被引用为 $scope.users
function selectUser ( user ) {
self.selected = angular.isNumber(user) ? $scope.users[user] : user;
}
即使 $scope 从未注入它也可以工作。如果我将其更改为 self.users,也可以。
$scope 是否隐式注入到每个 Angular 控制器中?它会在控制器构造函数中自动镜像 this 对象吗?
发生了什么事?
【问题讨论】:
-
您的代码中是否还有其他地方设置了 $scope.users?如果条件为真,代码是否会遇到这种情况?
-
您是否尝试过运行该应用程序?
-
我怀疑你的代码没有给出类似“ReferenceError:
$scopeis not defined”的消息... -
@joncondo 我没有找到任何以前的设置或注射。而且代码运行良好,所以我一定错过了注入。
-
@jocondo 知道了。 self.selected = angular.isNumber(user) 中的条件? $scope.users[user] : 用户;永远不会计算为真,因为在 HTML ng-click 指令中传递给函数的参数不是数字,而是对象。所以分配的值永远不是 $scope.users (当我记录它时,我得到了引用错误),而是用户对象。
标签: javascript angularjs angularjs-scope this