0

在 AngularJS 控制器中使用自定义对象与 $scope 属性是否被认为是更好的做法?

还是将plateCheck属性附加到$scope控制器的更好?

对象版本

app.controller('PlateCheckCtrl', ['$scope', 'PlateCheckService', function ($scope, PlateCheckService) {
    var plateCheck = {
        plateNumber: '',
        message: '',
        alertClass: '',
        checkPlate: function (plateNumber) {
            var _this = this;

            PlateCheckService.checkPlate(plateNumber).then(function (response) {
                _this.message = response.message;
                _this.alertClass = response.alertClass;
            });
        }
    };

    $scope.plateCheck = plateCheck;
}]);

$范围版本

app.controller('PlateCheckCtrl', ['$scope', 'PlateCheckService', function ($scope, PlateCheckService) {
    $scope.plateNumber = '';
    $scope.message = '';
    $scope.alertClass = '';
    $scope.checkPlate: function (plateNumber) {
        PlateCheckService.checkPlate(plateNumber).then(function (response) {
            $scope.message = response.message;
            $scope.alertClass = response.alertClass;
        });
    };
}]);

我以为我在某处读过,如果您没有使用 a 引用您的 $scope 对象/属性,那么.您做错了。

<input type="text" data-ng-model="object.property" /> <-- Right Way
<input type="text" data-ng-model="property" /> <-- Wrong Way
4

1 回答 1

3

对象版本是首选。

来自关于原型继承的angularjs wiki 。

通过遵循 >always have a '.' 的“最佳实践”,可以轻松避免原语的这个问题。在您的 ng 模型中 - 观看 3 分钟。Misko 使用 ng-switch 演示了 ?> 原始绑定问题。

有一个 '。' 在您的模型中将确保原型继承发挥作用。所以,使用而不是 .

如果您真的想要/需要使用原语,有两种解决方法:

在子范围内使用 $parent.parentScopeProperty。这将阻止子范围 > 创建自己的属性。在父作用域上定义一个函数,并从子作用域调用它,将原始值传递给父作用域(并非总是可能)

于 2013-11-04T05:25:49.827 回答