Angular JS:如何"加载"来自json数据集的单个记录?

时间:2015-06-15 20:39:02

标签: javascript json angularjs state

我有json数据,一个由50个对象代表人的数组。每个参数都有idlastName等参数。

我通过解析EmployeeResolve将其加载到我的控制器中,并加载到变量_this.employees

我还通过前一页的$ state params加载一个rowNumber变量,该变量包含用户点击的记录的ID:_this.rowNum = $stateParams.id;让我们说id5

我想现在为一个变量分配对象编号5(为了更好的解释方式),以便在我的HTML中我可以像{{controller.lastName}}

一样绑定到它

employees获取第5项的语法是什么?

更新 经过几个有用的评论和回答,我已经走到了这一步(人们现在是包裹):

_this.recordNum = Number($stateParams.id);
  _this.packages = PackagesResolve;

  _this.currentPackage = _this.packages.filter(function(pkg) {
    return pkg.id === _this.recordNum;
  });

  $log.debug('package from filter', _this.currentPackage[0].status);

但请注意,我希望_this.currentPackage包含一个对象,所以我可以简单地绑定到html中的道具,就像在currentPackage.last_name中一样,但事实并非如此。它是资源,我需要在日志语句中使用上面的_this.currentPackage[0].status来获取任何内容。并且这不会允许绑定。

一位同事建议修改我的决心

PackagesResolve: function($log, MockDataFactory) {
      return MockDataFactory.query({filename: 'packages'}).$promise.then(function(response) {
        return response;
      });
    }

添加整个$promise.then部分。没有真正的区别。

重申我要做的事情:

PackagesResolve正在获取一个包含50个对象的json数组。我希望能够在单击该json的表中的行时获取CURRENT对象。

不,@ jdvp根本不是其他帖子的副本。我需要使用Angular,而不是jquery或直接js。

1 个答案:

答案 0 :(得分:0)

如果我正确理解您的问题:resolve返回的对象是已解决的承诺。 "数据"已解决的承诺(在这种情况下是预期的人员信息数组)存储在resolve.data内。因此对于例如你有EmployeeResolve,你可以引用数组并使用它来存储它:

根据评论进行编辑:

// Assuming you've done all error checking...
_this.employees = EmployeeResolve.data;

// Now _this.employees has the array of people info.

$scope.controller = {};
$scope.controller.variableName = _this.employees[$stateParams.id];
// Now, you can access your object in your template using controller.variableName.

现在虽然我不建议在最终版本中编写类似的代码,但我确定你会得到这个要点。 ;)

附加说明:我创建一个空对象并将其作为controller存储在范围内的原因是因为您的问题所述。我假设您有自己的理由想要在controller内命名变量。

希望这有帮助!