刚刚开始尝试角度js。我已经设置了标准的asp.net mvc api控制器:
public class ValuesController : ApiController
{
// GET api/values
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
}
我想在列表框中获取这些值:
<div ng-controller="myctrl">
<select ng-model="selectedValue" ng-options="val for val in getData()">
<option value="">Select</option>
</select>
</div>
使用此脚本:
var app = angular.module('app', []);
app.controller('myctrl', function ($scope, $http) {
$scope.getData = $http.get('/api/values').then(function (data) {
return data;
});
});
当我运行它时,它不会填充列表框和 的jsfiddle:http://jsfiddle.net/dingen2010/t3eXj/
答案 0 :(得分:2)
在AngularJS 1.2.x版本中不会发生承诺展开。我相信你的代码应该像
那样 $http.get('/api/values').then(function (data) {
$scope.values=data;
});
在你的HTML中
<select ng-model="selectedValue" ng-options="val for val in values">
<option value="">Select</option>
</select>
答案 1 :(得分:0)
在上面的用例中,如果您选择使用get
方法将success
调用链接起来,那么data
将是您所期望的(即数据)由您的API返回。)
但是,由于您使用的是then
方法,因此提供给回调的参数实际上是一个promise对象,您可以使用data
属性访问所需的数据。
$scope.getData = $http.get('/api/values').then(function (promise) {
return promise.data;
});