【问题标题】:AngularJS - Using indexOf inside ng-repeat to show/hide valuesAngularJS - 在 ng-repeat 中使用 indexOf 来显示/隐藏值
【发布时间】:2014-12-10 08:20:03
【问题描述】:

我有一个包含一堆数据的JSON 文件:

我的数据.JSON:

{
"Addresses": {
    "AddressList": [
        {
            "HouseNumber": 201,
            "Street": "Victoria Lane",
            "Postcode": "SW1 8ES"
        },
        {
            "HouseNumber": 10,
            "Street": "Allen Close",
            "Postcode": "NG2 3TD"
        },
        {
            "HouseNumber": 57,
            "Street": "Thomas Street",
            "Postcode": "DR12 6TE"
        },
        {
            "HouseNumber": 57,
            "Street": "Old Lister Street",
            "Postcode": "OL4 5TH"
        },
        {
            "HouseNumber": 45,
            "Street": "Milk Round Street",
            "Postcode": "MK6 4HG"
        },
        {
            "HouseNumber": 102,
            "Street": "Jersey Quarter Avenue",
            "Postcode": "DR12 6TE"
        },
        {
            "HouseNumber": 845,
            "Street": "MR HAPPY STREET",
            "Postcode": "MR3 0FJ"
        }
    ]
}

如果通过 indexOf 找到来自 Street 的返回值的匹配项,我会尝试显示 div

HTML:

<div ng-repeat="address in Addresses.AddressList">
    {{ address.HouseNumber }}, {{ address.Street}}, {{ address.Postcode }}
    <div ng-show="address.Street.toLowerCase().indexOf('MR HAPPY STREET') == 0">
        MR HAPPY STREET WAS FOUND
    </div>
    <div ng-show="address.Street.toLowerCase().indexOf('Milk Round Street') == 0">
        Milk Round Street WAS FOUND
    </div>
</div>

这似乎不起作用。你可以通过ng-show 执行这样的indexOf 吗?

【问题讨论】:

    标签: angularjs angularjs-scope angularjs-ng-repeat ng-show ng-hide


    【解决方案1】:

    使用这个

    <div ng-repeat="address in Addresses.AddressList">
        {{ address.HouseNumber }}, {{ address.Street}}, {{ address.Postcode }}
        <div ng-show="showByJs(address,'MR HAPPY STREET')">
            MR HAPPY STREET WAS FOUND
        </div>
        <div ng-show="showByJs(address,'Milk Round Street')">
            Milk Round Street WAS FOUND
        </div>
    </div>
    

    在控制器中写入

        $scope.showByJs=function(address, indexofWord){
        if (address.Street.toLowerCase().indexOf(indexofWord) == 0)
        {
           return true;
        }else
         {
           return false
    }
        }
    

    【讨论】:

      【解决方案2】:

      您需要检查 "MR HAPPY STREET""Milk Round Street" 的小写字母,因为您正在尝试与 address.Street 的小写字母进行比较。

      <div ng-repeat="address in Addresses.AddressList">
          {{ address.HouseNumber }}, {{ address.Street}}, {{ address.Postcode }}
          <div ng-show="address.Street.toLowerCase().indexOf(('MR HAPPY STREET').toLowerCase()) == 0">
              MR HAPPY STREET WAS FOUND
          </div>
          <div ng-show="address.Street.toLowerCase().indexOf(('Milk Round Street').toLowerCase()) == 0">
              Milk Round Street WAS FOUND
          </div>
      </div>
      

      【讨论】:

        【解决方案3】:

        您的问题是您比较了两个不相同的字符串:使用toLowerCase() 函数后,您的字符串Milk Round Street 看起来像milk round street。所以indexOf() 将返回-1。 这就是为什么您需要比较 2 个小写字符串,例如:

        <div ng-show="address.Street.toLowerCase().indexOf('mr happy street') == 0">
        

        或:

        <div ng-show="address.Street.toLowerCase().indexOf(('MR HAPPY STREET').toLowerCase()) == 0">
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-04-29
          • 1970-01-01
          • 2013-11-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-10-15
          相关资源
          最近更新 更多