2013-05-04 89 views
0

我有一个用jquery编写的小应用程序,并且想将它翻译成angularjs。角条件格式化json

但我需要一些建议,如果有可能与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}}知识,但如果它是一个数组我怎么输出表?或列表?

+1

对您想要使用NG-重复阵列 – lucuma 2013-05-04 01:15:24

回答

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; 
} 
+0

有一件事你应该注意的是,一般控制不应该做任何DOM操作。 – lucuma 2013-05-06 11:50:56

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>