2016-07-19 22 views
0

我試圖在使用indexOf的ng-show屏幕上輸出名稱「Sam」,但是沒有出現過。任何幫助表示讚賞。Angular indexOf不輸出文字

HTML

<head></head> 
    <body> 
     <div ng-controller="ArrayController"> 
     <div ng-repeat="product in products"> 
      <div ng-show="product.name.indexOf('Sam') == 2"> 
      </div> 
     </div> 
     </div> 


     <script src="bower_components/angular/angular.js"></script> 
     <script src="app.js"></script> 
    </body> 
</html> 

var app = angular.module('myApp', []); 
app.controller('ArrayController', ['$scope', function($scope){ 
$scope.products = [ 
{ 
name: 'Joe' 

}, 
{ 
name: 'Bill' 
}, 
{ 
name: 'Sam' 
} 
]; 

}]); 
+2

也請記住,你的測試將是**永遠**等於2. – developer033

+1

對不起,但我也建議你瞭解Array.indexOf的作用https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf –

+2

@SamiTriki ,即使字符串有'indexOf()'https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/String/indexOf – Satpal

回答

1

可能的解決方法使用ng-if代替ng-show

<body ng-app="myApp"> 
     <div ng-controller="ArrayController"> 
     <div ng-repeat="product in products"> 
      <div ng-if="product.name.indexOf('Sam') > -1">{{product.name}} 
      </div> 
     </div> 
     </div> 
</body> 

var app = angular.module('myApp', []); 
app.controller('ArrayController', ['$scope', function($scope){ 
    $scope.products = [ 
    { 
     name: 'Joe' 
    }, 
    { 
     name: 'Bill' 
    }, 
    { 
     name: 'Sam' 
    } 
    ]; 
}]); 
0
<div ng-show="product.name.indexOf('Sam') == 2"></div> 

這將顯示在div如果product.name包含字符串 「山姆」 開始在其第三個字符(即 「xxSam」 )。這可能不是你想要的。

該div是空的,所以即使ng-show真的是不可見的。這也可能不是你想要的。

我敢肯定你想是這樣的:的

<div>{{product.name}}</div>