gpt4 book ai didi

javascript - Angular - 何时使用 $scope 与不使用

转载 作者:行者123 更新时间:2023-11-30 07:59:04 24 4
gpt4 key购买 nike

我们什么时候使用 $scope,什么时候不使用它?似乎没有它我也能逃脱,至少就 Controller 定义而言(参见以下示例)。

我说的对吗?您能否提供一个 this/self 不起作用的示例,我们被迫使用 $scope?

// Method 1: Not using $scope
function LoginController() {
var self = this;
this.username = "";
this.password = "";

this.login = function() {
if( (self.username === 'admin') && (self.password === 'admin') ) {
// Do something
}
}
}

// Method 2: Using $scope
function LoginController($scope) {
$scope.username = "";
$scope.password = "";

$scope.login = function() {
if( ($scope.username === 'admin') && ($scope.password === 'admin') ) {
// Do something
}
}
}

最佳答案

当前的 Angular 2.0 migration path描述了在不久的将来没有 $scope 的世界,强烈建议您关注 Angular style guide ,它反过来建议尽可能使用 controllerAs 语法,以便为潜在的迁移做好准备并遵守最佳实践。

也就是说,目前有一些您必须使用$scope的实例。

$scope.$on
$scope.$broadcast
$scope.$emit
$scope.$watch
$scope.$apply

这些特殊情况均不适用于您的示例,因此您应该使用 controllerAs 而不是 $scope,即:

ng-controller="MyController as MyCtrl"

如果您必须访问$scope 以便使用上述方法之一,您可以将它注入(inject)您的 Controller ,同时仍然使用controllerAs 语法:

function LoginController($scope) {
var self = this;
self.username = "";
self.password = "";

self.login = function() {
if( (self.username === 'admin') && (self.password === 'admin') ) {
// Do something
}
}

$scope.$on('event', function () {});
}

关于javascript - Angular - 何时使用 $scope 与不使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32782476/

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