Angularjs checkbox фильтр, как сделать кнопку сброса выборок

313
27 мая 2017, 18:35

Всем привет. Помогите решить проблему. Нужно сделать кнопку или чекбокс с название "all", который бы сбрасывал все предыдущие выборки в чекбоксах.

(function () {'use strict'; 
 
angular. 
  module('myApp', []). 
  controller('WineCtrl', WineCtrl); 
 
// Functions - Definitions 
function WineCtrl() { 
  // Variables - Private 
  var self = this; 
   
  // Variables - Public 
  self.filter = {}; 
  self.wines = [ 
    {name: 'Wine A', category: 'red'}, 
    {name: 'Wine B', category: 'red'}, 
    {name: 'Wine C', category: 'white'}, 
    {name: 'Wine D', category: 'red'}, 
    {name: 'Wine E', category: 'red'}, 
    {name: 'Wine F', category: 'white'}, 
    {name: 'Wine G', category: 'champagne'}, 
    {name: 'Wine H', category: 'champagne'}     
  ]; 
   
  // Functions - Public 
  self.filterByCategory = filterByCategory; 
  self.getCategories = getCategories; 
   
  // Functions - Definitions 
  function filterByCategory(wine) { 
    return self.filter[wine.category] || noFilter(self.filter); 
  } 
     
  function getCategories() { 
    return (self.wines || []). 
      map(function (wine) { return wine.category; }). 
      filter(function (cat, idx, arr) { return arr.indexOf(cat) === idx; }); 
  } 
 
  function noFilter(filterObj) { 
    return Object. 
      keys(filterObj). 
      every(function (key) { return !filterObj[key]; }); 
  } 
} 
 
}());
<script src="https://code.angularjs.org/1.5.7/angular.min.js"></script> 
<div ng-app="myApp"> 
  <div ng-controller="WineCtrl as ctrl"> 
    <h3>Categories</h3> 
    <div ng-repeat="category in ctrl.getCategories()"> 
      <label> 
        <input type="checkbox" ng-model="ctrl.filter[category]" /> 
        {{ category }} 
      </label> 
    </div> 
    <hr /> 
    <h3>Available Wines</h3> 
    <div ng-repeat="wine in (ctrl.wines | filter:ctrl.filterByCategory) as filteredWines"> 
      {{ wine.name }} <i>({{ wine.category }})</i> 
    </div> 
    <hr /> 
    <b>Number of results: {{ filteredWines.length }}</b> 
  </div> 
</div>

READ ALSO
повторно запускается таймер

повторно запускается таймер

добрый деньнакрутил не очень понимая, но нужно срочно

290
Как писать юнит тесты для функций манипулирующих DOM?

Как писать юнит тесты для функций манипулирующих DOM?

Или это только на глаз проверяется?

246
dataset возвращает undefined

dataset возвращает undefined

У меня в браузерах не работает datasetЧто в firefox, что в хроме

208