使用ng-options AngularJS中的值选择下拉列表

时间:2017-08-01 08:13:41

标签: javascript angularjs angularjs-scope ng-options

我正在尝试将'All things that user code doesn't know about设置为所选国家/地区,但不管怎么说,如果我这样做,只会将中国设置为下拉列表 - China

让我知道是否可以通过文本设置值,因为通过服务我得到$scope.countrySelected = $scope.countryList[5];作为我需要匹配的文本。

HTML代码 -

China

脚本代码 -

<select 
 ng-options="country.c_name for country in countryList track by country.c_id" 
 ng-model="countrySelected">
</select>

工作Plnkr - http://plnkr.co/edit/6qSvuuOtJHVSoNWah0KR?p=preview

1 个答案:

答案 0 :(得分:1)

您可以使用filter方法接受回调功能作为参数。

  

filter()方法创建一个包含所有传递元素的新数组   由提供的函数实现的测试。

$scope.countrySelected = $scope.countryList.filter(function(item){
     return item.c_name=='China';
})[0];

<强> Working Plnkr

另外,另一种方法是使用find方法。

$scope.countrySelected = $scope.countryList.find(function(item){
     return item.c_name=='China';
});

对于与这些方法不兼容的旧版浏览器,您可以实现自己的过滤方法。

Array.prototype.filter = function(func, thisArg) {
   'use strict';
   if ( ! ((typeof func === 'Function') && this) )
      throw new TypeError();

   var len = this.length >>> 0,
   res = new Array(len), // preallocate array
   c = 0, i = -1;
   if (thisArg === undefined)
      while (++i !== len)
        // checks to see if the key was set
        if (i in this)
           if (func(t[i], i, t))
             res[c++] = t[i];
   else
      while (++i !== len)
         // checks to see if the key was set
         if (i in this)
            if (func.call(thisArg, t[i], i, t))
              res[c++] = t[i];
   res.length = c; // shrink down array to proper size
   return res;
};

来源:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter