Angularjs: 属性中缺少括号
Angularjs: bracket missing in attribute
我正在执行 Angularjs 代码并出现一个奇怪的错误:
”错误:[$parse:syntax] 语法错误:从 [{asset.sn} 开始的表达式 [{{asset.sn}}] 的第 2 列的标记 '{' 无效键}].
http://errors.angularjs.org/1.3.11/$parse/syntax?p0=%7B&p1=无效%20key&p2=2&p3=%7B%7Basset.sn%7D%7D&p4=%7Basset.sn%7D%7D
minErr/<@http://localhost:8000/app/vendor/angular/angular.js:63:12
这是什么意思,为什么显示?
HTML代码:
<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;
}
}
}]);
<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>
您正在尝试对 param
中写入的内容进行双向绑定 (param : "="
),但这不是对象或变量,而是表达式。丢失 {{}}
或将 scope.param 绑定更改为字符串:
scope: {
param: '@'
},
我正在执行 Angularjs 代码并出现一个奇怪的错误:
”错误:[$parse:syntax] 语法错误:从 [{asset.sn} 开始的表达式 [{{asset.sn}}] 的第 2 列的标记 '{' 无效键}]. http://errors.angularjs.org/1.3.11/$parse/syntax?p0=%7B&p1=无效%20key&p2=2&p3=%7B%7Basset.sn%7D%7D&p4=%7Basset.sn%7D%7D minErr/<@http://localhost:8000/app/vendor/angular/angular.js:63:12
这是什么意思,为什么显示?
HTML代码:
<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;
}
}
}]);
<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>
您正在尝试对 param
中写入的内容进行双向绑定 (param : "="
),但这不是对象或变量,而是表达式。丢失 {{}}
或将 scope.param 绑定更改为字符串:
scope: {
param: '@'
},