AngularJS 数据绑定
AngularJS data-binding
我有两个运行良好的代码示例,但我不明白其中的区别。
所以,第一个是:
AngularJS:
$scope.state = {presentation: true};
HTML:
<div ng-class="{{state.presentation}} ? 'on' : 'off'"></div>
还有第二个一个:
AngularJS:
$scope.presentation = true;
HTML:
<div ng-class="presentation ? 'on' : 'off'"></div>
为什么我不能在第二个例子中使用这样的东西:
<div ng-class="{{presentation}} ? 'on' : 'off'"></div>
当我将 {{ }} 与 $scope.presentation = true;
一起使用时,它在 ng-class 中不起作用,但我可以像文本一样使用 {{presentation}},我的意思是 <div>{{presentation}}</div>
效果很好。为什么?
但是有了 $scope.state = {presentation: true};
我什至可以在 ng-class 中使用 {{presentation}} 并且效果很好。
有什么区别?
你不应该像那样在 ng 属性中使用表达式。它会失败(没有或没有状态对象):
Error: [$parse:syntax] Syntax Error: Token '?' not a primary
expression at column 2 of the expression [ ? 'on' : 'off'] starting at
[? 'on' : 'off'].
这很正常,因为 angularJs 将其作为 angularJS expression 执行,所以当您输入时:
<div ng-class="presentation ? 'on' : 'off'"></div>
内部angularJS将其作为表达式执行,也可以这样写:
<div class="{{presentation ? 'on' : 'off'}}"></div>
我有两个运行良好的代码示例,但我不明白其中的区别。 所以,第一个是:
AngularJS:
$scope.state = {presentation: true};
HTML:
<div ng-class="{{state.presentation}} ? 'on' : 'off'"></div>
还有第二个一个:
AngularJS:
$scope.presentation = true;
HTML:
<div ng-class="presentation ? 'on' : 'off'"></div>
为什么我不能在第二个例子中使用这样的东西:
<div ng-class="{{presentation}} ? 'on' : 'off'"></div>
当我将 {{ }} 与 $scope.presentation = true;
一起使用时,它在 ng-class 中不起作用,但我可以像文本一样使用 {{presentation}},我的意思是 <div>{{presentation}}</div>
效果很好。为什么?
但是有了 $scope.state = {presentation: true};
我什至可以在 ng-class 中使用 {{presentation}} 并且效果很好。
有什么区别?
你不应该像那样在 ng 属性中使用表达式。它会失败(没有或没有状态对象):
Error: [$parse:syntax] Syntax Error: Token '?' not a primary expression at column 2 of the expression [ ? 'on' : 'off'] starting at [? 'on' : 'off'].
这很正常,因为 angularJs 将其作为 angularJS expression 执行,所以当您输入时:
<div ng-class="presentation ? 'on' : 'off'"></div>
内部angularJS将其作为表达式执行,也可以这样写:
<div class="{{presentation ? 'on' : 'off'}}"></div>