Angularjs ng在自定义指令中重复:语法错误:Token'$指数';出人意料

Angularjs ng在自定义指令中重复:语法错误:Token'$指数';出人意料,angularjs,Angularjs,在AngularJS中,此操作失败并出现错误: 错误消息: Error: [$parse:syntax] Syntax Error: Token '$index' is unexpected, expecting [:] at column 3 of the expression [{{$index}}] starting at [$index}}]. 以下是指令: app.directive('myDirective',function(){ 返回{ 限制:'E', 作用域:{foo:'

在AngularJS中,此操作失败并出现错误:


错误消息:

Error: [$parse:syntax] Syntax Error: Token '$index' is unexpected, expecting [:] at column 3 of the expression [{{$index}}] starting at [$index}}].
以下是指令:

app.directive('myDirective',function(){
返回{
限制:'E',
作用域:{foo:'=',myIndex:'='},
templateUrl:'directions/myDirective.html'
};
});
这似乎只是自定义指令的问题。如果我尝试这样做:

<div ng-repeat="foo in foos" style="padding: {{$index}}px;">
    index == {{$index}}
</div>

索引=={{$index}}

由于您正在使用
=
声明隔离作用域属性,Angular需要一个未插值的属性:

为了在插值变为
@
时插入
$索引
值:

scope: { foo: '=', myIndex: '@' },
然后使用:

<my-directive ng-repeat="foo in foos" foo="foo" my-index="{{$index}}"/>


如果我这样做,它只会获取文本字符串
“$index”
(不带引号),而不是
$index
的值。如何使属性成为插值属性?将
=
更改为
@
。这是一个字面的,插值的值。谢谢,这很有效。我注意到您用它更新了答案,但是应该注意的是,使用
myIndex:'='
myIndex=“$index”
,传递了文本字符串
$index
,因此答案的第一部分没有帮助。