使用排序指令时出现未知的角度误差

时间:2013-11-15 08:21:17

标签: angularjs angularjs-directive

我有一个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)">&#x25BC;</span>' +
            '<span class="sortArrow" ng-show="show_sort_icon(false)">&#x25B2;</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>

enter image description here

1 个答案:

答案 0 :(得分:0)

@Heikki找到答案

  

考虑名称以下划线开头或结尾的字段   私人领域。 Angular表达式不允许引用它   范围链上的字段。这仅适用于Angular表达式   (例如插值并使用字符串表达式调用$ parse   参数) - Javascript本身没有这样的概念。

     

要解决此错误,请使用备用非私有字段(如果可用)   或将该字段公开(通过删除任何前导和尾随   从名称中强调字符。)

     

导致此错误的示例表达式:

<div>{{user._private_field}}</div>