当HTML标记写在指令的模板部分时,我有一个没有任何问题的指令。
我刚刚在.html文件中移动了HTML标记,并且在页面加载时,我看到了:
Error: [$parse:lexerr] http://errors.angularjs.org/1.3.14/$parse/lexerr?p0=Unexpected%20next%20character%20&p1=s%2016-16%20%5B%5C%5D&p2=option.name%20%3D%3D%3D%20%5C'choices%5C'
原始指令:
app.directive('myDirective', function () {
return {
restrict: 'E',
scope: {
data: "="
},
template: '<p>' +
'<div ng-repeat="select in data.output">' +
'<div ng-if= "select.name === \'choices\'">' +
'<p ng-repeat="choice in select.value"><label><input type="radio" ng-model="data.input[0].value" ng-value="$index" >{{choice}}</label></p>' +
'</div>' +
'</div>' +
'</p>'
}
}
);
新:
app.directive('myDirective', function () {
return {
restrict: 'E',
scope: {
data: "="
},
templateUrl: 'home/mydirective.html'
}
}
);
我的页面加载我可以看到mydirective.html的http请求,并且标记是正确的,但是勒克斯随后出现在控制台中。
答案 0 :(得分:1)
你的html不应该包含在角色$compile
该模板时会混乱的连接。它应该是简单的HTML。
<强> mydirective.html 强>
<p>
<div ng-repeat="select in data.output">
<div ng-if="select.name === 'choices'">
<p ng-repeat="choice in select.value">
<label>
<input type="radio" ng-model="data.input[0].value" ng-value="$index">{{choice}}</label>
</p>
</div>
</div>
</p>
答案 1 :(得分:0)
在我的情况下,这与在\'
文件中使用带有反斜杠(.html
)的单引号有关。当使用template
将html直接放在指令中时,它运行良好。
但是当它被放入一个单独的.html
文件并使用templateUrl
时,它会引发错误。因此,将ng-class="{\'something\'}"
更改为ng-class="{'something'}"
会为我修复此问题。希望这可以节省其他人几个小时。