从angularjs到控制器的web api调用无效

时间:2014-02-20 03:15:35

标签: angularjs c#-4.0 asp.net-web-api

刚刚开始尝试角度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/

2 个答案:

答案 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;
 });