Не срабатывает ng-hide="{{recoverymy|emailfilter}}"
Может кто подскажет почему у меня не возвращается когда я использую фильтр для отображения. Сам фильтр отрабатывает правильно так как тестил
<div ng-hide="{{recoverymy|emailfilter}}" ng-click='recovery()' class="btn btn-lg btn-primary btn-block">Recovery </div> JS: app.filter('emailfilter', function () { return function (string, $scope) { var result =false; if (/[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/.test(string)) { // alert('proshel'); result = true; } else { // alert('ne proshel'); result = false; } return result; }; }); Ошибок никаких не выдает. Когда вставляю в <div ng-hide="true" ... то все ок. Может другим способом нужно действовать или тут что то не так ? |
Цитата:
Цитата:
Начни с простого примера, потом усложняй... Так же поймешь что не так. ;) |
Цитата:
<!DOCTYPE html> <html ng-app='app'> <head> <script src="http://code.angularjs.org/1.1.4/angular.min.js"></script> <!-- <script src='http://code.jquery.com/jquery-latest.js'></script> <link rel='stylesheet type=text/css href=tmp.css' /> --> <style type='text/css'> </style> <script type='text/javascript'> var app = angular.module('app', [ 'appCtrl', 'appFlt' ]); angular.module('appCtrl', []).controller( 'ctrl', [ '$scope', function($scope) { $scope.test=''; } ] ); angular.module('appFlt', []). filter( 'fltEmpty', function() { return function(input) { return input==''; }; } ). filter( 'fltCss', function() { return function(input) { var val=(input=='')? 'block': 'none'; return {display: val}; }; } ); </script> </head> <body ng-controller='ctrl'> <input type=text ng-model='test' /> <p ng-hide='{{test|fltEmpty}}'>Поле заполнено!</p> <p ng-style='{{test|fltCss}}'>Поле пусто...</p> <p>'{{test}}' отфильтрован как '{{test|fltEmpty}}'</p> </body> </html> Хоть и меняется с каждым разом, но на внешнее представление никак не влияет. :no: |
Цитата:
<!DOCTYPE html> <html ng-app='app'> <head> <script src="http://code.angularjs.org/1.1.4/angular.min.js"></script> <!-- <script src='http://code.jquery.com/jquery-latest.js'></script> <link rel='stylesheet type=text/css href=tmp.css' /> --> <style type='text/css'> </style> <script type='text/javascript'> var app = angular.module('app', [ 'appCtrl', 'appFlt' ]); angular.module('appCtrl', []).controller( 'ctrl', [ '$scope', function($scope) { $scope.test=''; $scope.style={}; $scope.empty=function(){ if ($scope.test=='') { $scope.style={display: 'block'}; } else { $scope.style={display: 'none'}; }; }; } ] ); angular.module('appFlt', []). filter( 'fltEmpty', function() { return function(input) { return input==''; }; } ); </script> </head> <body ng-controller='ctrl'> <input type=text ng-model='test' ng-change='empty();' /> <p ng-hide='{{test|fltEmpty}}'>Поле заполнено!</p> <p ng-style='style'>Поле пусто...</p> <p>'{{test}}' отфильтрован как '{{test|fltEmpty}}'</p> </body> </html> |
Цитата:
Вот тебе правильный пример использования директивы ngHide... <!DOCTYPE html> <html ng-app='app'> <head> <script src="http://code.angularjs.org/1.1.4/angular.min.js"></script> <!-- <script src='http://code.jquery.com/jquery-latest.js'></script> <link rel='stylesheet type=text/css href=tmp.css' /> --> <style type='text/css'> </style> <script type='text/javascript'> var app = angular.module('app', [ 'appCtrl' ]); angular.module('appCtrl', []).controller( 'ctrl', [ '$scope', function($scope) { $scope.test=''; $scope.style={}; $scope.no=($scope.test=='') $scope.empty=function(){ if ($scope.test=='') { $scope.no=true; $scope.style={display: 'block'}; } else { $scope.no=false; $scope.style={display: 'none'}; }; }; } ] ); </script> </head> <body ng-controller='ctrl'> <input type=text ng-model='test' ng-change='empty();' /> <p ng-hide='no'>Поле заполнено!</p> <p ng-style='style'>Поле пусто...</p> </body> </html> |
Спасибо. Разобрался. Как понял фильтры нужны только что бы преобразовать данные но никак не для условий :(
|
Часовой пояс GMT +3, время: 05:29. |