使用AngularJS在选择/下拉列表中设置初始值

时间:2015-02-12 00:34:42

标签: javascript angularjs model default-value selectlist

这让我很疯狂,因为我确信这很简单,但我在过去的两天里尝试了多种不同的方法,没有任何方法可以正常运作。

我的视图HTML中有两个选择下拉列表:

 <p>Spend between

<select
    id        ='minSpend' 
    ng-model  ="cheapest"
    ng-options="offer.PriceAUD as '$'+Math.round(offer.PriceAUD) for offer in offers |  uniquePrice:'PriceAUD'">      
</select>
and
<select 
    id        ='maxSpend'
    ng-model  ="dearest"
    ng-options="offer.PriceAUD as '$'+Math.round(offer.PriceAUD) for offer in offers |  uniquePrice:'PriceAUD'"         >
</select>

一旦收到数据,它们就可以很好地填充唯一值。 uniquePrice过滤器如下所示:

app.filter('uniquePrice', function() {
return function(input, key) {
    if (typeof input == 'undefined'){return;}

    var unique = {};
    var uniqueList = [];

    for(var i = 0; i < input.length; i++){
        if(typeof unique[input[i][key]] == "undefined"){
            unique[input[i][key]] = "";
            input[i][key] = Math.round(input[i][key]);
            uniqueList.push(input[i]);
        }
    }
    return uniqueList;
 };
});

我最喜欢的是最初选择的最低价格和最高价格。我设法编写了一个fn来实现它&#34;点击&#34;:

         $scope.setValues = function(){ 
             $scope.cheapest    = $scope.offers[0].PriceAUD;
             $scope.dearest     = $scope.offers[ $scope.offers.length-1].PriceAUD; 

         }

[$ scope.offers来自按PriceAUD ASC排序的数据库]

通过简单的HTML触发:

 <button ng-click="setValues()">Set Values</button>

哪个工作正常。但是,如何在数据加载完成后触发此操作?我试过了:

        $scope.offers  = Items.query();


        $scope.offers.$promise.then(function (result) {
            $scope.setValues();     
        });

但它不起作用。 当我在控制器中直接设置$ scope.dearest = $ scope.offers [0] .PriceAUD时,它不起作用,因为承诺没有得到解决。我确定我只需要把它放在正确的位置,但在哪里? 谢谢你的帮助。

编辑:获取项目的代码:

 var appServices = angular.module('appServices', ['ngResource']);

 appServices.factory('Items', ['$resource',

function($resource){ 
  var url = '/api/get/offers.json';
  var paramDefaults = {};
  var actions = "{      query: {method:'GET', params:{id:'Items'}, isArray:true}";
  var optns = '';

  return $resource(url, paramDefaults, actions , optns); 
 }]);

0 个答案:

没有答案