我有一个用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}}
的内容,但如果它是一个数组,我输出一个表格?还是清单?
答案 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;
}