【问题标题】:$$hashkey showing up in ng-repeat output$$hashkey 出现在 ng-repeat 输出中
【发布时间】:2014-04-09 03:55:32
【问题描述】:

我的 ng-repeat 指令中的一列输出 $$hashkey 的值。

我不知道这是怎么开始的。我从一个简单的 GET 获取数据并检查从成功回调中获取的数据,显示 $$hashkey 被插入到每个对象中。我知道 $$hashkey 被 angular 使用,但就 HTML 视图输出而言,这从未发生过。

这是 1.2.16

HTTP GET:

$http.get('index.php/getWorkbook/'+$routeParams.workbook).success(function(data) {
    console.log(data); // Has $$hashkey inserted
    $scope.workbook = data;
});

HTML:

    <tr ng-repeat='row in workbook'>
        <td ng-repeat="key in notSorted(row)" ng-init="value = row[key]">
            <input type="text" ng-model="value" ng-blur="edit(value, key, row)" />
        </td>
    </tr>

这里是控制器功能。

$scope.notSorted = function(obj){
    if (!obj) {
        return [];
    }
    return Object.keys(obj);
}

【问题讨论】:

  • 你最近升级了 Angular 吗?改变什么?您是否一直使用 Object.keys 来获取属性名称?
  • 我使用的是 1.2.16 CDN。我不确定发生了什么。我使用 Object 键来防止 Angular 对我的列进行排序。
  • 另一种解决方案似乎是在 ngRepeat 中使用 track - stackoverflow.com/a/23656919/1148107

标签: angularjs angularjs-ng-repeat


【解决方案1】:

似乎行不喜欢通过 notSorted() 运行。添加 angular.copy() 最终为我工作。

$scope.notSorted = function(obj){
    obj = angular.copy(obj);

    if (!obj) {
        return [];
    }

    return Object.keys(obj);
}

【讨论】:

    【解决方案2】:

    在您的控制器中尝试此更改

    $scope.workbook = data;
    $scope.workbook = angular.fromJson(angular.toJson($scope.workbook));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-08
      • 2016-03-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多