gpt4 book ai didi

javascript - $scope 未注入(inject),仍被引用。为什么它有效?

转载 作者:行者123 更新时间:2023-11-29 21:20:13 25 4
gpt4 key购买 nike

在 Angular Material Starter App 中,定义了一个“UserController”,但没有注入(inject) $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 从未被注入(inject),它仍然有效。如果我将其更改为 self.users,同样有效。

是否在每个 Angular Controller 中隐式注入(inject)了 $scope?它会自动在 Controller 构造函数中镜像 this 对象吗?

这是怎么回事?

这是代码 https://github.com/angular/material-start

最佳答案

我刚刚克隆了 repo 并测试了它没有像你说的那样工作。$scope is not defined 错误。您必须注入(inject)构造函数才能使用它不,它不会自动注入(inject),您需要将 $scope 作为参数传递给 Controller ​​才能使用它,否则您应该得到错误 $scope is undefined 它可能就像您在 selectedUser 函数中给出条件一样,它永远不会到达 $scope 以对其使用react那个。

    function UserController( userService, $mdSidenav, $mdBottomSheet, $timeout, $log , $scope) 
{
}
function selectUser ( user ) {
//try to change this line and run code and select a user you will get error
self.selected = angular.isNumber(1) ? $scope.users[user] : user;
console.log($scope) //$scope is undefine
}

关于javascript - $scope 未注入(inject),仍被引用。为什么它有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38706067/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com