【问题标题】:How to transform string to array in angularjs's html如何在angularjs的html中将字符串转换为数组
【发布时间】:2016-06-03 14:26:40
【问题描述】:

.filter('privateip',function() {
    return function(p) {
        p.split(',');
        return p
    }
})
<tr ng-repeat="ins in  instances">
  <td ><input type="checkbox" ng-model="icheckedList[ins.id]" ng-required="{{needOneList}}" ng-checked="all" one-least></td>
  <td><span ng-bind="ins.name"></span></td>
  <td><table><tr ng-repeat="p in ins.private_ip|privateip"></tr></table></td>
  <td ng-bind="ins.public_ip"></td>
</tr>

ins.private_ip 是一个字符串(如'192.168.1.1,192,168.1.2,192.168.1.8'),我想将其转换为数组,我该如何使用过滤器或您推荐的任何方式。

【问题讨论】:

    标签: angularjs filter


    【解决方案1】:

    需要返回拆分结果:

    .filter('privateip',function() {
        return function(p) {
            return p.split(',');
        }
    });
    

    字符串是不可变的,这意味着p.split(',') 不会改变p,而是返回新值(本例中为数组)。

    【讨论】:

    • 它不起作用...我想问一下,在 ng-repeat="p in ins.private_ip | privateip" 中,过滤器的参数是 private_ip?我是新手...
    • 它应该可以工作。这是一个演示:plnkr.co/edit/yaq4qJ2Zj7WzzH7D7ikE?p=preview。而privateip 过滤器不带任何参数。
    【解决方案2】:

    您可以ngRepeat 处理返回数组的函数:

    <td><table><tr ng-repeat="p in splitIps(ins.private_ip)"></tr></table></td>
    
    //controller
    $scope.splitIps = function(ip){
        return ip.split('.');
    }
    

    【讨论】:

    • 我试过了,但是当 ip='192.168.1.1' ip 被拆分为 [ ' ',' ' ] 的结果,太奇怪了……但是在 chrome 的控制台中拆分结果不正常,请问如何解决?
    • 很难说...确保原始字符串不包含任何空格或换行符。您可以使用trim() 在拆分之前删除空格
    • 哦,,这是我的原因,很抱歉我忘了改东西,谢谢~~
    猜你喜欢
    • 2019-03-18
    • 2015-02-05
    • 1970-01-01
    • 2016-09-01
    • 2015-11-11
    • 1970-01-01
    • 1970-01-01
    • 2013-08-14
    • 1970-01-01
    相关资源
    最近更新 更多