如果密钥存在,AngularJS将显示数据

ash*_*osh 2 json angularjs angularjs-ng-repeat

我有一个通过$http电话收集的数据JSON格式.它是这样的:

{
"projects": [
        { "url": "http://project-1-url.com", "src": "images/projects/1.png", "title": "Project 1", "tags": ["AngularJS","Web Design","Self Project"]},
        { "src": "images/projects/2.png", "title": "Project 2","tags": ["HTML","Plugin","Self Project"]}
    ]
}
Run Code Online (Sandbox Code Playgroud)

您可能已经注意到,JSON中的几个对象没有URL参数.我ngRepeat用来显示这样的数据:

<ul>
<li ng-repeat="project in projects">{{ project.title }}</li>
</ul>
Run Code Online (Sandbox Code Playgroud)

其中,项目来自控制器:

app.controller('MyCtrl', function ( $scope, $http) {
   $scope.projects = null;
   $http.get("http://api-endpoint-here").then(function (response) {
            $scope.projects = response.data;
   });
});
Run Code Online (Sandbox Code Playgroud)

我希望有一些逻辑,使得具有URL属性的JSON对象应该显示为链接,而没有URL属性的JSON对象应该只输出title.很像:

<!-- If JSON has URL -->
<li ng-repeat="project in projects"><a href="project.url">{{ project.title }}</a></li>
<!-- If JSON DO NOT have URL -->
<li ng-repeat="project in projects">{{ project.title }}</li>
Run Code Online (Sandbox Code Playgroud)

我应该在控制器中准备一些逻辑吗?或者是否可以ngShow在视图中使用某些逻辑?

Tim*_*thy 11

不是最漂亮,但有效......

<li ng-repeat="project in projects">
    <span ng-if="project.url"><a href="project.url">{{ project.title }}</a></span>
    <span ng-if="!project.url">{{ project.title }}</span>
</li>
Run Code Online (Sandbox Code Playgroud)