javascript - 如何检测 Angular ng-repeat 是否显示结果

标签 javascript angularjs

我只想在搜索字段中输入内容但没有匹配项时显示“无结果”消息。 目前过滤器有效,但是当我输入一个没有给出结果的关键字时,它没有显示 “无结果”消息。如何做到这一点?

<div class="portfolio-list-wrap" ng-controller="LatestProjectCtrl">
<input type="text" ng-model="search.$"/>
<div class="portfolio-thumb" ng-repeat="work in works.project | filter:search">
    <img src="images/{{work.string}}.jpg" alt="{{work.name}}"/>
    <h4>{{work.name}}</h4>
    <i>{{work.date}}</i>
</div>
</div>

我的工厂是这样的

var myApp = angular.module('myApp', []);


myApp.factory('Works', function(){

var Works = {}

Works.project =[
    {
        name : "project1",
        string : "projectstring1",
        date: "17 August 2012"
    },
    {
        name : "project2",
        string : "projectstring2",
        date: "12 December 2013"
    },
    {
        name : "project3",
        string : "projectstring3",
        date: "17 September 2012"
    },
    {
        name : "project3",
        string : "projectstring4",
        date: "17 August 2012"
    },
];  
return Works;
})



function LatestProjectCtrl($scope, Works){
$scope.works = Works;
}

最佳答案

你可以显示一条消息说没有这样的结果:

<span ng-show="(projects | filter:query).length == 0">No results</span>

完整的例子请看下面的代码片段:

function Ctrl($scope) {
  $scope.projects = [
      {
        name: "Sunny project 1",
        date: "17.3.2016",
        image: "pr1"
      },
      {
        name: "Windy project 2",
        date: "18.03.2016",
        image: "pr2"
      },
      {
        name: "Cloudy project 3",
        date: "19.03.2016",
        image: "pr3"
      }
    ]
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

<div ng-app>
  <div ng-controller="Ctrl">
    <input type="text" ng-model="query" />
    <div class="portfolio-thumb" ng-repeat="project in projects | filter:query">
      <h4>{{project.name}}</h4>
      <ul>
        <li>{{project.date}}</li>
        <li>Img source = '{{project.image}}.jpg'</li>
      </ul>
    </div>
    <div ng-show="(projects | filter:query).length == 0">No results</div>
  </div>
</div>

关于javascript - 如何检测 Angular ng-repeat 是否显示结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22033706/

相关文章:

javascript - 为什么 typeof 1===1 返回 false 而不是 bool 值

java - 在 WebView Android 中扫描条码

javascript - 页面加载后 Bootstrap 总是改变元素在手机上的绝对位置

Angularjs:更改音频类别已结束

angularjs - Ionic 框架 Twitter 集成

angularjs - cordova.js 导致引用错误 'require is not defined'

javascript - 如何等待 jQuery Ajax 请求从 WatiN 完成?

javascript - 使用 JavaScript 解析 URL # 片段

ajax - 使 Ajax 调用 Angular 到 Node.js (express.js)

javascript - 如何循环遍历 100 个具有不同属性的对象的数组并从每个对象中检索 1 个属性值?