Angular indexOf不输出文本

时间:2016-07-19 13:44:37

标签: angularjs

我试图输出名称" Sam"在使用indexOf的ng-show屏幕上,但没有出现任何内容。任何帮助表示赞赏。

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 个答案:

答案 0 :(得分: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'
    }
  ];
}]);

答案 1 :(得分:0)

<div ng-show="product.name.indexOf('Sam') == 2"></div>

如果product.name包含字符串&#34; Sam&#34;这将显示div。从第三个字符开始(即&#34; xxSam&#34;)。那可能不是你想要的。

div为空,即使ng-show真实,也不会对用户可见。那也可能不是你想要的。

我非常确定你想要的是:

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