Angularjs $resource和$q设置下拉初始值
我有一个数据服务,上面写着:Angularjs $resource和$q设置下拉初始值,angularjs,resources,q,Angularjs,Resources,Q,我有一个数据服务,上面写着: myApp.factory('locationsData', function ($resource) { return $resource('/api/Location/:id', { id: '@id' }, { update: { method: 'PUT' } });}); 然后,我使用这些位置填充视图中的下拉列表: <select ng-model="locationId" ng-options="item.LocationId as item
myApp.factory('locationsData', function ($resource) {
return $resource('/api/Location/:id', { id: '@id' }, { update: { method: 'PUT' } });});
然后,我使用这些位置填充视图中的下拉列表:
<select ng-model="locationId" ng-options="item.LocationId as item.LocationName for item in locations"></select>
这不起作用,我认为是因为$resource的异步特性——它还没有列表,所以我无法设置它
我知道$q是为了解决这个问题而设计的,但不确定如何创建承诺,并设置
$scope.locationId = 8;
完成后
我已经阅读了$q和$resource文档,但是我还没有看到一个好的代码示例,说明如何像我正在做的那样执行一个简单的get,然后在get承诺实现后执行一些函数/操作
谢谢。我相信你会在控制器的某个地方做些什么
$scope.locations=locationsData.query();
query或get方法可以使用success和error函数的参数。差不多
locationsData.query(function(data){
});
所以你应该设置
$scope.locationId = 8;
在查询的成功函数中。所以我不需要$q?这似乎奏效了。ng模型属性位于对象上时除外,例如
$scope.location.locationId
,当我尝试在控制器中访问它时除外,例如$scope.location.locationId=8代码>它不能运行。我可以通过执行$scope.location=[]控制器中的code>,但当我提交表单时,location对象为空。我可能在做些傻事,你没有。另外,只要html模板中的绑定是ng model=“location.locationId”,$scope.location.locationId就可以工作。
$scope.locationId = 8;