无法使用angular.isString来处理ng-repeat

时间:2015-04-29 12:01:09

标签: javascript angularjs

我正在尝试与ng-if进行angular.isString比较。但是返回了数组中的所有项目。

所以我尝试输出angular.isString结果,但它没有输出任何内容。

以下是我想做的事情:

<li ng-repeat="item in data">
  <div ng-if="angular.isString(item)">
    {{ item }}
  </div>
</li>
function MyCtrl($scope)
{
    $scope.data =
    [
        "Hello",
        "-",
        123
    ];
}

这是一个小提琴:http://jsfiddle.net/m6k13whh/2/

3 个答案:

答案 0 :(得分:7)

根据范围评估角度表达式。您可以创建一个返回angular.isString的函数:

<li ng-repeat="item in data">
  <div ng-if="isString(item)">
    {{ item }}
  </div>
</li>

$scope.isString = function(item) {
    return angular.isString(item);
}

您也可以使用该功能过滤所有项目:

<li ng-repeat="item in data | filter:isString">        
   <div>
       {{ item }}     
   </div>
</li>

答案 1 :(得分:2)

最佳解决方案是将对角度方法的引用传递到范围

$scope.isString = angular.isString

然后部分地使用ng-if="isString(item)"

http://plnkr.co/edit/5keCUQrHQnbl4Wg0oKp1?p=preview

答案 2 :(得分:0)

Hej,

确保只导入一个库。 因为在小提琴中你有两个角度脚本。 删除外部资源中的那个!

<div ng-app="myApp" ng-controller="MyCtrl">

<!-- this if comparison is what I want to do -->
     <ul>
         <li data-ng-repeat="item in data">
             <div data-ng-if="isString(item)">
                {{ item }}
             </div>
         </li>
     </ul>
 </div>

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

 myApp.controller('MyCtrl', function($scope) {
     $scope.data = [
         "Hello",
         "-",
         123
     ];

     $scope.isString = function(value) {
          return angular.isString(value);
     };
});