角度条件格式化json

时间:2013-05-04 01:13:18

标签: javascript angularjs

我有一个用jquery写的小应用程序,想把它翻译成angularjs。

但我需要一些关于是否可以用angularJs制作的建议。在我的应用程序中,我进行了一些ajax调用,检索一个Json,然后解析它并注入到dom中。

这里的问题是我的json属性是:简单的字符串,数组或嵌套的json对象。

因此,当我解析json时,我将其格式化:例如,我遍历数组并构建数据表,或者解析字符串并获取字符串的长度。然后我将所有输出到dom。

这在jquery中有点冗长,但是让它成为可能。我想知道我是否可以使用AngularJs做类似的事情。

$.each(data.ALLIMG, function(i, image) {
    if(image.alt){
        $("#imagesDetail").append("<li>ALT:" + image.alt + " SRC: ");
        $("#imagesDetail").append(image.src + "</li>");
        totalAltImg++;
    }
});
$("#text").append("<p>" + data.TEXT + "</p>");
$("#text").append("<p><b>Length: </b>" + data.TEXT.LENGTH + " character(s)</p>");

根据我对角度的了解,我应该使用类似{{text}}的内容,但如果它是一个数组,我输出一个表格?还是清单?

2 个答案:

答案 0 :(得分:0)

应该看起来像

<ul>
  <li ng-repeat='image in data.ALLIMG'> ALT: {{image.alt}} {{image.src}}</li>
</ul>

如果您需要过滤掉无效数据(就像您在示例中所做的那样),您可以在控制器中定义过滤谓词:

<ul>
  <li ng-repeat='image in data.ALLIMG| filter:properImages'> 
     ALT: {{image.alt}} {{image.src}}</li>
</ul>

答案 1 :(得分:0)

这是一个完整的工作示例。您可以使用ng-show来测试属性是否存在,尽管在此示例中它将呈现隐藏但是它比过滤器简单得多。我还提供了一个简单的过滤器完整示例。 data.TEXT我只是假设您想要计算该文本的字符。

演示:http://plnkr.co/br2M4GXrDENd4rLkDBho

<!-- with ngshow -->
<ul id="imagesDetail">
  <li ng-repeat="image in data.ALLIMG" ng-show="image.alt">
     ALT: {{image.alt}} SRC: {{image.src}}
  </li>
</ul>
<!-- with filter see below -->
<ul id="imagesDetail2">
  <li ng-repeat="image in data.ALLIMG | filter:hasAlt" >
    ALT: {{image.alt}} SRC: {{image.src}}
  </li>
</ul>

<div id="text">
  <p>{{data.TEXT}}</p>
  <p><b>Length: </b> + {{data.TEXT.length}} character(s)</p>
</div>

控制器过滤器:

 $scope.hasAlt = function(image) {
  return image.alt!==undefined;
 }