我正在做
Angularjs代码,并有一个奇怪的错误:
“错误:[$parse:Syntax]语法错误:从[{asset.sn}}开始的表达式[{{asset.sn}}]的第2列处的令牌'{‘无效键].
http://errors.angularjs.org/1.3.11/ $parse / Syntax?p0 = {& p1 =无效密钥& p2 = 2& p3 = {{asset.sn}}& p4 = {asset.sn}}
minErr /< @ http://localhost:8000/app/vendor/angular/angular.js:63:12
这意味着什么以及为什么它显而易见?
<table class="table" ng-table="tableParams" show-filter="false" ng-class="{loadingtable : loading}" ng-show="showResults"> <tbody> <tr ng-repeat="asset in assets"> <td class="col-md-4" data-title="'Serial Number'" header-class="text-left" search-word-marker param="{{asset.sn}}"></td> <td class="col-md-4" data-title="'Asset Name'" accesskey="" header-class="text-left" search-word-marker param="{{asset.asset_name}}"></td> <td class="col-md-2" data-title="'Asset Type'" header-class="text-left">{{asset.asset_type}}</td> <td class="col-md-2" data-title="'Tags'" header-class="text-left">{{asset.tags}}</td> <td class="col-md-1"> <div class="btn-group"> <span> <button type="button" class="btn btn-sm btn-primary" ng-click="viewAsset(asset.sn);">{{'VIEW' | translate}}</button> </span> </div> </td> </tr> </tbody> </table>
指令代码:
Application.Directives.directive('searchWordMarker',['$log','$rootScope',function ($log,$rootScope) { return { restrict: 'A',scope: { param: '=' },//template: "{{myNewString}}",//replace: false,link: function (scope,el,attr) { var myString = attr.param; var searchWord = $rootScope.searchWord; var regex = new RegExp(searchWord,"g"); var myNewString = myString.replace(regex,"<B>" + searchWord + "</B>"); el[0].innerHTML = myNewString; } } }]);
解决方法
你试图对param中写的内容进行双向绑定(param:“=”),但这不是对象或变量,而是表达式.要么丢失{{}},要么将scope.param绑定更改为字符串:
scope: { param: '@' },