2017-02-10 3 views
2

Я работаю над угловым приложением. Будучи новичком, сталкивающимся с проблемами при попытке получить приведенный ниже сценарий. Все предложения были бы полезными.javascript, чтобы скрыть и показать сетки на основе выбранной радиокнопки и нажать кнопку поиска

Я хочу отобразить одну или две угловые сетки пользовательского интерфейса на основе переключателя, выбранного сверху. Когда пользователь выбирает Показать одну сетку радиокнопку и введите Atlanta in From текстовое поле и Чикаго в В текстовое поле и нажмите SearchLocations button должна отображаться первая сетка angularjs ui. Аналогично, когда пользователь выбирает переключатель «Показать две сетки» и введите «Атланта» в От и Чикаго в В текстовое поле и нажмите SearchLocations button, две сетки должны быть показаны. Пожалуйста, найдите демо-версию here.

HTML код:

<div> 
     <label> 
Show one Grid <input type="radio" name="Passport" ng-click="ShowPassport('Y')" /></label> 
<label>Show two Grids <input type="radio" name="Passport" ng-click="ShowPassport('N')" /> 
     </label> 
     </div> 
    <div class="row"> 
     <div class="form-group" ng-controller="citiesCtrl"> 
      <label>From</label> 
      <input type="text" ng-model="places[0]" placeholder="Type Departure City" typeahead="item for item in items | filter:$viewValue | limitTo:8"> 
     </div> 
     <div class="form-group" ng-controller="citiesCtrl"> 
      <label>To</label> 
      <input type="text" ng-model="places[1]" placeholder="Type Destination City" typeahead="item for item in items | filter:$viewValue | limitTo:8"> 
     </div> 
    </div> 

    <input type="button" value="SearchLocations" ng-click="submit()"> 

    <div ng-repeat="user in users | filter: {name: searchValue} : true "> 
     <h3>First Grid</h3> 
     <div ui-grid="{ data: user.details }" ng-show="user.show" class="myGrid"></div> 
    </div> 

    <div ng-repeat="user in users | filter: {name: searchValue} : true "> 
     <h3>Second Grid</h3> 
     <div ui-grid="{ data: user.details }" ng-show="user.show" class="myGrid"></div> 
    </div> 

код расслоение плотной:

angular.module('myApp', ['ngAnimate', 'ui.bootstrap','ngTouch', 'ui.grid', 'ui.grid.selection', 'ui.grid.edit','ui.grid.cellNav']); 
     angular.module('myApp').controller('citiesCtrl',function($scope){ 
      // $scope. places = undefined; 
      $scope.items = ["Atlanta", "Chicago", "NewYork"]; 
      $scope.selectAction = function() { 
       console.log($scope.places1); 

      }; 
     }); 

    /*Controller for searchLocations button*/ 
     angular.module('myApp').controller('searchController', ['$scope', function($scope) { 
      $scope.places = ['', '']; 
      $scope.searchValue = ''; 

      $scope.submit = function() { 
       if ($scope.places[0].length > 0 && $scope.places[1].length > 0) { 
        $scope.searchValue = $scope.places[0] + $scope.places[1]; 
       } 
      }; 

      $scope.users = [ 
       {'name' : 'AtlantaChicago', 
        'show' : true, 
        'details' : [ 
         {"Travel Date": "10/10/2014", commute:"Bus"}, 
         {"Travel Date": "10/11/2014", commute:"flight"}] 
       }, 
       {'name' : 'NewYorkChicago', 
        'show' : true, 
        'details': [ 
         {"Travel Date": "3/15/2016", commute:"flight"}, 
         {"Travel Date": "10/12/2016", commute:"flight"}, 
        ] 
       } 
      ]; 
      $scope.gridOptions = { 
       enableFiltering: true, 
       columnDefs: [ 
        { name: 'Travel Date', width: '5%'}, 
        { name: 'Departurecommute', enableFiltering: false, width: '12%' } 
       ], 
       rowHeight: 20, 
       enableHorizontalScrollbar:2 

      }; 
     }]); 
+0

см. Мой [ответ] (http://stackoverflow.com/a/42153330/3543808) –

ответ

1

Вам нужно изменить несколько вещей, чтобы заставить его работать, как вы ожидали.

Если вы хотите отобразить сетки на основе выбора радио кнопки:
1. Вы должны назначить ng-model и value к кнопкам радио. Radio buttons in Angular

<label> 
     Show one Grid 
     <input type="radio" name="Passport" ng-model="Passport" value=1 ng-click="ShowPassport('Y')" /> 
     </label> 
     <label>Show two Grids 
     <input type="radio" name="Passport" ng-model="Passport" value=2 ng-click="ShowPassport('N')" /> 
     </label> 

2.Assign Passport значение другой переменной на button мыши. Show hide using Angular

$scope.submit = function() { 
     $scope.showGrid = $scope.Passport; //Here 
     if ($scope.places[0].length > 0 && $scope.places[1].length > 0) { 
     $scope.searchValue = $scope.places[0] + $scope.places[1]; 
     } 
    }; 

3.Wrap ваши сетки в DIV и назначить нг-шоу атрибута

<div ng-show="showGrid==='1'||showGrid==='2'"> //first grid 
<div ng-show="showGrid==='2'"> //second grid 

4.Now он должен работать. См. Working plnkr

0

передать этот образец кода. Вы можете легко понять

Sample Code 

https://codepen.io/SusanneLundblad/pen/iBhoJ

+0

Я уже указал этот сайт. В моем приложении сначала мне нужно выбрать радиокнопку, ввести данные в текст полей, как указано выше, и нажмите на кнопки SearchLocations. Именно здесь становится сложнее передать значение контроллеру. Любые предложения были бы полезны. Спасибо. – user3684675

Смежные вопросы