在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;
}]);
$ scope Version
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;
});
};
}]);
我以为我读过某个地方,如果你没有用.
引用你的$ scope对象/属性,那你做错了。
<input type="text" data-ng-model="object.property" /> <-- Right Way
<input type="text" data-ng-model="property" /> <-- Wrong Way
答案 0 :(得分:3)
首选对象版本。
来自原型继承的angularjs wiki。
通过遵循&gt;始终拥有'。'的“最佳实践”,可以轻松避免使用原语这个问题。在您的ng模型中 - 观看3分钟。 Misko用ng-switch演示了?&gt;原始绑定问题。
拥有'。'在你的模型中将确保原型继承发挥作用。所以,使用 而不是
如果您确实需要/需要使用原语,则有两种解决方法:
在子范围中使用$ parent.parentScopeProperty。这将阻止子范围&gt;创建自己的属性。 在父作用域上定义一个函数,并从子函数中调用它,将原始值传递给父作用域(并不总是可能)