我可以使用 "this" 访问范围对象本身的属性吗?
Can I access properties of a scope object within itself using "this"?
我需要得到以下例子的总数:
$scope.fees = {
basic: 1,
premium: 2,
total: this.basic + this.premium
}
为什么这行不通?它说 this
未定义。有没有办法实现这一点而不必写出 total: $scope.fees.basic + $scope.fees.premium
.
如果有办法缩短它我会很高兴。
编辑:我实际上必须在 $scope.fees
之外添加 total
属性。 $scope.fees.total = ...
为什么 this.basic
不起作用
this
在包含此语句的函数的上下文中计算。所以 this
不是指 $scope.fees
对象,而是指控制器。
为什么 total : $scope.fees.basic + $scope.fees.premium
也不起作用
在计算表达式 $scope.fees.basic + $scope.fees.premium
时,$scope.fees
对象尚不存在,因为您正在创建它。因此它会导致像 "Cannot read property basic of undefined" 这样的错误。
如何解决这个问题
除了您已经找到的解决方案之外,没有任何其他解决方案会导致您想要的行为,因此很遗憾,您将不得不坚持下去。
您可以考虑使用 "controller as class" 模式来减少您对 $scope 的依赖。你可以这样做:
app.controller('FeeCtrl', function () {
this.basic =1;
this.premium =2;
this.total = this.basic + this.premium;
});
然后您可以将此控制器直接注入您的 dom:
<div ng-controller="FeeCtrl as fee">
{{ fee.total }}
</div>
这里有更详细的说明
http://toddmotto.com/digging-into-angulars-controller-as-syntax/
你可以使用函数..
你好 {{ total() }}
function FeeController($scope) {
$scope.fees = {
basic: 1,
premium: 2,
};
$scope.total = function() {
return $scope.fees.basic + $scope.fees.premium;
};
}
我需要得到以下例子的总数:
$scope.fees = {
basic: 1,
premium: 2,
total: this.basic + this.premium
}
为什么这行不通?它说 this
未定义。有没有办法实现这一点而不必写出 total: $scope.fees.basic + $scope.fees.premium
.
如果有办法缩短它我会很高兴。
编辑:我实际上必须在 $scope.fees
之外添加 total
属性。 $scope.fees.total = ...
为什么 this.basic
不起作用
this
在包含此语句的函数的上下文中计算。所以 this
不是指 $scope.fees
对象,而是指控制器。
为什么 total : $scope.fees.basic + $scope.fees.premium
也不起作用
在计算表达式 $scope.fees.basic + $scope.fees.premium
时,$scope.fees
对象尚不存在,因为您正在创建它。因此它会导致像 "Cannot read property basic of undefined" 这样的错误。
如何解决这个问题
除了您已经找到的解决方案之外,没有任何其他解决方案会导致您想要的行为,因此很遗憾,您将不得不坚持下去。
您可以考虑使用 "controller as class" 模式来减少您对 $scope 的依赖。你可以这样做:
app.controller('FeeCtrl', function () {
this.basic =1;
this.premium =2;
this.total = this.basic + this.premium;
});
然后您可以将此控制器直接注入您的 dom:
<div ng-controller="FeeCtrl as fee">
{{ fee.total }}
</div>
这里有更详细的说明
http://toddmotto.com/digging-into-angulars-controller-as-syntax/
你可以使用函数..
你好 {{ total() }}function FeeController($scope) {
$scope.fees = {
basic: 1,
premium: 2,
};
$scope.total = function() {
return $scope.fees.basic + $scope.fees.premium;
};
}