2015-04-11 10 views
0

Я пытаюсь открыть модальное приложение, основанное на конкретном клике, которое должно открыть соответствующий modal.I попытался использовать ng-if и ng-switch, но это не сработало. Так что, пожалуйста, помогите мне .., Спасибо! Вот мой код ..,Как проверить условия в angularjs

<div ng-controller="projectsController"> 

     <ul> 
     <li><a href="#" ng-click='toggleModal()' id="A">Bangalore</a></li> 
     <li><a href="#" ng-click='toggleModal()' id="B">Mangalore</a></li> 
     <li><a href="#" ng-click='toggleModal()' id="C">Mysore</a></li> 
     </ul> 


     <div ng-switch on="id"> 
      <div ng-switch-when="A"> 
       <modal-dialog show='modalShown' width='800px' height='50%'> 
       <p>Modal Content Goes here</p> 
       </modal-dialog> 
      </div> 
      <div ng-switch-when="B"> 
       <modal-dialog show='modalShown' width='800px' height='50%'> 
       <p>Second Modal Content Goes here</p> 
       </modal-dialog> 
      </div> 
     </div> 
</div> 
    /*app.js file*/ 
     myApp.controller('projectsController', ['$scope', function($scope) { 
     $scope.modalShown = false; 
     $scope.toggleModal = function() { 
     $scope.modalShown = !$scope.modalShown; 
     }; 
    }]); 
    //This is my directive in app.js i.e.,both controller and directive are in 
    app.js file 
    myApp.directive('modalDialog', function() { 
     return { 
     restrict: 'E', 
     scope: { 
      show: '=' 
     }, 
     replace: true, 
     transclude: true, 
     link: function(scope, element, attrs) { 
      scope.dialogStyle = {}; 
      if (attrs.width) 
      scope.dialogStyle.width = attrs.width; 
      if (attrs.height) 
      scope.dialogStyle.height = attrs.height; 
      scope.hideModal = function() { 
      scope.show = false; 
      }; 
     }, 
    template: "<div class='ng-modal' ng-show='show'><div class='ng-modal-overlay' ng-click='hideModal()'></div><div class='ng-modal-dialog' ng-style='dialogStyle'><div class='ng-modal-close' ng-click='hideModal()'>X</div><div class='ng-modal-dialog-content' ng-transclude></div></div></div>" 
    }; 
    }); 
+0

Ваши 3 ссылки делают то же самое при нажатии. Почему должно произойти что-то другое, если они делают то же самое? Вы прочитали документацию по ng-click и ng-switch? –

+0

, поэтому согласно вам, как изменить его с помощью ng-click и ng-switch. – hashc0der

+0

Я сказал, что вы не должны их использовать? Я сказал: прочитайте документацию этих директив. Первый модальный div показан, если '$ scope.id' равно 'A'. У вас нет переменной с именем 'id' в области. И ng-click не устанавливает такую ​​переменную. –

ответ

0

Я не уверен, где модальная диалог директива исходит от, но это возможно атрибут шоу в нем ожидает выражение. Вы можете изменить его на:

<modal-dialog show="modalShown === true" width="800px" height="50%"> 
+0

жаль, что он не работает. - это всего лишь тег, который я использовал здесь. – hashc0der

+0

@amit похоже, что вы можете следовать примеру на http://adamalbrecht.com/2013/12/12/creating-a-simple-modal-dialog-directive-in-angular-js/ - если это так, вы добавили директиву в свой код? Без этой директивы тег модального диалога ничего не сделает. – Javeed

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