【问题标题】:webapi call from angular js to controller is not working从角度 js 到控制器的 webapi 调用不起作用
【发布时间】:2014-02-20 03:15:35
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    Promise unwrapping 在 AnuglarJS 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>
    

    【讨论】:

      【解决方案2】:

      在您的上述用例中,如果您选择使用 success 方法链接您的 get 调用,那么 data 将是您所期望的(即您的 API 返回的数据)。

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

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

      【讨论】:

        猜你喜欢
        • 2015-04-25
        • 2019-03-24
        • 2018-05-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-11-10
        • 2015-06-02
        • 1970-01-01
        相关资源
        最近更新 更多