我有一个angular指令可以对表中的列进行排序。在版本1.20之前,这有效,但升级到1.20后,我收到以下错误。有谁知道出了什么问题?
错误:[$ parse:isecprv] http://errors.angularjs.org/undefined/ $解析/ isecprv?P0 = _sort()
app.directive('sorted', function () {
return {
scope: true,
transclude: true,
template: '<a href="#/" ng-click="_sort()" ng-transclude=""></a>' +
'<span class="sortArrow" ng-show="show_sort_icon(true)">▼</span>' +
'<span class="sortArrow" ng-show="show_sort_icon(false)">▲</span>',
controller: function ($scope, $element, $attrs) {
$scope._sort = function () {
$scope.model.sort($attrs.sorted);
};
$scope.show_sort_icon = function (is_desc) {
return ($scope.model.sidx == $attrs.sorted) && ($scope.model.is_desc == is_desc);
};
}
};
});
用法:
<table>
<thead>
<tr>
<th sorted="something">Something</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="item in model.items">
<td>{{item.something}}</td>
</tr>
</tbody>
</table>
答案 0 :(得分:0)
@Heikki找到答案
考虑名称以下划线开头或结尾的字段 私人领域。 Angular表达式不允许引用它 范围链上的字段。这仅适用于Angular表达式 (例如插值并使用字符串表达式调用$ parse 参数) - Javascript本身没有这样的概念。
要解决此错误,请使用备用非私有字段(如果可用) 或将该字段公开(通过删除任何前导和尾随 从名称中强调字符。)
导致此错误的示例表达式:
<div>{{user._private_field}}</div>