为什么我的控制器属性'未定义'当我给它分配$resource query()的结果时
Why is my controller property 'undefined' when I assign it the result of $resource query()?
有一个JSON数据结构:
[
{
"title" :"a1",
"id" :"b1",
"name" :"c1"
},
{
"title" :"a2",
"id" :"b2",
"name" :"c2"
}
]
我正在访问的是一个外部JSON和通过工厂方法解析。我想把它赋值给控制器中的Javascript变量。
function Control($scope,data)
{
var e=data.query(); /* getting the external JSON data */
alert(e[0].title);
}
表示e[0]
未定义。有没有其他方法可以把它赋值给Javascript变量然后遍历它?请帮助。
@Marty很可能是正确的。如果您正在使用来自$resource服务的query()方法,则它是异步的。这可能是您想要的:
data.query( function( data ) {
var e = data;
alert(e[0].title);
});
好的,那么$resource可能像这样令人困惑…它立即为您提供对返回对象的引用,但直到异步AJAX调用返回才更新对象……所以…
如果你把data.query()的返回值放在$scope的属性中,因为当你在视图中绑定它时,它是$守望的,你会看到它更新。然而,如果你只是想提醒它,它会在更新之前提醒这个值。还是因为$resource的异步特性。
否则,您可以通过@ markrajcock在他的答案中显示的方式获得值。
下面是使用$resource query();
的伪代码示例app.controller('FooCtrl', function($scope, $resource) {
var Bar = $resource('/Bar/:id', {id: '@id'});
// here, we get the result reference and stick it in the scope,
// relying on a digest to update the value on our screen.
$scope.data = Bar.query();
//OR
//here we already have a reference.
var test = Bar.query(function() {
//in here, test has been populated.
$scope.data2 = test;
});
alert(test); //not populated here, yet.
//OR
Bar.query(function(x) {
$scope.data3 = x;
});
});
这样做是为了使返回的对象可以在其上预先实例化函数,如$save()等。
相关文章:
- 在javascript中接收来自mssql.query的变量
- Query JS Ext.data.Store
- Chrome扩展,Chrome.tabs.query的结果未定义
- 可以't通过Angular$resource POST数据
- 如何将解析云代码的query.count结果保存在变量中
- $resource上带有.then()函数的角度自定义方法导致错误
- Dojo:TypeError:marketStore.query不是函数
- AngularJS在.run中等待Resource
- Angular Cache $resource Result
- 如何对具有多个$resource调用的角度控制器进行单元测试
- jQuery在单击按钮时中止所有AJAX请求(query)
- 如何通过Angular中的$resource发送来自自定义指令的输入值
- “query”是MongoDB中的保留名称吗?
- 通过JavaScript/jQuery运行PHP SQL Query以隐藏条目
- CSS Media Query 和 Javascript/jQuery 不匹配
- $resource 'get' 函数如何在 AngularJS 中同步工作
- 在 $resource.query 回调函数中访问类变量时出现 es6 问题
- 如何使用AngularJS$resource.query传递参数
- AngularJS, $resource,从.query()中获取对象
- 为什么我的控制器属性'未定义'当我给它分配$resource query()的结果时