Angular不识别控制器中定义的函数

时间:2016-11-16 10:00:12

标签: angularjs

我在angular中编写了一个litlle程序,其中包含一个函数,用于检查字符串是否在给定的字符串数组中。 这是我的角色代码里面我的控制器:

$scope.currencies = ["EUR", "USD", "GBP"];
$scope.languagesValues = ["en", "nl"];

function searchStringInArray(str, strArray) {
    for (var j=0; j<strArray.length; j++) {
        if (strArray[j] === str) return j;
    }
    return -1;
}

$scope.saveGeneralParams = function(){

if (searchStringInArray($scope.paramsGEN.lan.paramUserValue, $scope.languagesValues) === -1){
   $scope.paramsGEN.lan.paramUserValue = 'en';
}

if (searchStringInArray.inArray($scope.paramsGEN.cur.paramUserValue, $scope.currencies)=== -1){
   $scope.paramsGEN.cur.paramUserValue = 'EUR';
}
//other things.....

在我的html代码中,我有这段代码:

<select id="language" name="language" ng-model="paramsGEN.lan.paramUserValue">
  <option ng-repeat="language in languages" value="{{language.value}}">
    {{language.name | translate}}
  </option>
</select>

<select id="currency" name="currency" ng-model="paramsGEN.cur.paramUserValue">                              
<option ng-repeat="currency in currencies" value ="{{currency}}">
  {{currency}}
</option>
</select>

但是这段代码没有用,角度显示我:&#34;错误:a.searchStringInArray不是函数&#34;。

我该如何解决?

1 个答案:

答案 0 :(得分:0)

数组有一个&#39;包括&#39;你应该使用的方法。请参阅MSDN docs

尝试:

if ($scope.languagesValues.includes($scope.paramsGEN.lan.paramUserValue)) {
  $scope.paramsGEN.lan.paramUserValue = 'en';
}

那应该为你做。