ng-repeat和string替换表达式值

时间:2015-02-04 16:50:55

标签: javascript json angularjs node.js express

在使用ng-repeat指令时,我无法找到删除角度表达式中子字符串的解决方案。

控制器在外部javascript文件中,html如下。



function myController($scope, $http){
  $http.get('http://localhost:3000/people.json').
    success(function(data){
      $scope.persons = data;
    });
}

<table ng-controller="myController" class="table table-striped table-hover">
  <thead class="text-center">
    <th>Name</th>
    <th>ID</th>
    <th>Address</th>
  </thead>
  <tbody>
    <tr ng-repeat="person in persons" class="text-center">
      <td>((person.name}}</td>    
      <td>{{person.id}}</td>
      <td>{{person.address}}</td>
    </tr>
  </tbody>
</table>
&#13;
&#13;
&#13;

localhost:3000 / people.json页面有几百个JSON对象:

[  {    姓名:&#34; John Smith&#34;,    id:12345,    地址:&#34;地址:789 Broadway St&#34;  },

... ]

我的问题:剥离“地址”的最有效和/或最简单的方法是什么:&#39;地址值中的子字符串?我没有写访问people.json页面的权限。

3 个答案:

答案 0 :(得分:5)

向控制器添加功能。

之类的东西
$scope.stripAddr = function(address) {
  return address.substring(5);
}

并将您的HTML更改为

<td>{{stripAddr(person.address)}}</td>

请原谅和我的javascript中的错误我一直使用coffescript但我希望你明白这个想法

答案 1 :(得分:0)

使用可能是最佳方式的过滤器。你可以在任何地方重用那个过滤器,你想要删除一些匹配的字符串,就像我们使用addr一样:

<强> HTML

<tr ng-repeat="person in persons" class="text-center">
  <td>((person.name}}</td>    
  <td>{{person.id}}</td>
  <td>{{person.address}}</td>
</tr>

<强> JS

.filter('matchreplace',function() {
        return function(value, matchstring){
            return value.split(matchstring).pop()
        }
    }
  );

Working Fiddle

感谢。

答案 2 :(得分:0)

尝试

<td>{{person.address.substring(5)}}</td>