AngularJS以承诺填写dropdwon

时间:2016-04-19 16:53:32

标签: javascript angularjs

我需要在视图加载时填充下拉列表。但问题是,当我试图填写下拉列表时,它显得空白。我

控制器

 app.controller('CurrencyCtrl', ['$scope', 'Currency', '$http', function ($scope, Currency) {
$scope.curencies = [];
        Currency.get(function (response) {
                angular.forEach(response, function (val, key) {
                    $scope.currencies.push(val);
                });
            });

查看

     <select class="form-control" name="country" 
    data-ng-model="curencies" 
data-ng-options="option.name for option in curencies.value track by curencies.id">

                                                            </select>

国土资源

app.factory("Currency", function ($resource) {
    return $resource("api/currencies", {}, {
        get: {method: "GET", isArray: true}
    });
});

2 个答案:

答案 0 :(得分:0)

数据工厂

var datafactory = angular.module('Currency', ['Currency']);
datafactory.factory('Currency', function ($http, $q) {
return {

    //Get Data
    getCurrency: function (Date) {
        var deferred = $q.defer();

        $http({
            method: 'GET',
            url: 'api/Send_Mail'
        }).success(function (data) {
            deferred.resolve(data);
        }).error(function (response) {
            deferred.reject(response);

        });
        return deferred.promise;
    }
 }

内部控制器

$scope.loadstatus++;
Factory.getCurrency().then(function (data) {
    $scope.loadstatus++;
    //do something
}, function (err) {
    $scope.loadstatus--;
    alert("Error" + error);
});

您可以使用loadstatus来控制页面加载

答案 1 :(得分:0)

试试这个:

<强>控制器

 app.controller('CurrencyCtrl', ['$scope', 'Currency', '$http', function ($scope, Currency) {
   $scope.curencies = Currency.get();
 });

查看

     <select class="form-control" name="country" 
    data-ng-model="curencies" 
data-ng-options="option.name for option in curencies track by curencies.id">

                                                            </select>

<强>国土资源

app.factory("Currency", function($resource, $q) {
  return {
    get: function() {
      var deferred = $q.defer();
      $resource("api/currencies").get().$promise.then(function(response) {
        var result = [];
        angular.forEach(response, function(val, key) {
          result.push(val);
        });
        deferred.resolve(result);
      })
      return deferred.promise;
    }
  };
});