2014-02-20 99 views
2

刚开始尝试角度js。我已经安装了标准的asp.net的MVC API控制器:从角度js到控制器的webapi调用不起作用

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

任何控制台错误? – ssilas777

回答

2

在AnuglarJS 1.2.x版本中不会发生Promise展开。我相信,你的代码应该这样做

 $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> 
0

在上面的用例中,如果选择将get呼叫与success方法相链接,那么data就是您期望的方式(即,由您的API返回的数据)。

但是,由于您使用的是then方法,因此提供给回调的参数实际上是一个承诺对象,您可以使用data属性访问所需的数据。

$scope.getData = $http.get('/api/values').then(function (promise) { 
    return promise.data; 
});