0

我目前正在使用很少的 underscore.js 在 Angular 中开发一个后端网站。对于我的后端,我使用的是非常方便的 php 框架 Laravel 4。我面临的问题是:

当我用 angular 查询一个 url 时,响应很好而且很干净,所以我可以 ng-repeat 没有问题。但是当我试图用下划线提取响应的第一个元素时,它给了我:未定义。

这是我的控制器代码的摘录:

var Client = $resource('myUrl/that/works/fine/and/returns/well');

var resultat = Client.query();

$scope.clients = resultat ;

$scope.isAnArray = _.isArray(resultat); // it returns true;

如果我现在尝试下面的行 $scope.myFirstElemInArray is undefined ???

$scope.myFirstElemInArray = _.first(resultat ); // expected:the first element.

我真的不明白它有什么问题。这是我的变量结果的内容:

 [{"id":"2","email":"olivier@example.com"},{"id":"3","email":"mezigh@example.com"}]

如果有人可以提供一点帮助,我真的对这个 Olivier (Fr) 感到疯狂

4

1 回答 1

3

我相信你需要为此使用回调。这是$resource文档所说的

重要的是要意识到调用 $resource 对象方法会立即返回一个空引用(对象或数组取决于 isArray)。从服务器返回数据后,现有参考将填充实际数据。这是一个有用的技巧,因为通常将资源分配给模型,然后由视图呈现。拥有一个空对象不会导致渲染,一旦数据从服务器到达,那么该对象就会被数据填充,并且视图会自动重新渲染自身以显示新数据。这意味着在大多数情况下,我们不必为操作方法编写回调函数。

就像是

Client.query(function(data) {
$scope.myFirstElemInArray = _.first(data);
});
于 2013-06-27T11:42:15.293 回答