Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 18.02.2015, 19:25
Аспирант
Отправить личное сообщение для evgeniy123 Посмотреть профиль Найти все сообщения от evgeniy123
 
Регистрация: 19.02.2011
Сообщений: 37

Не срабатывает 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"  ...

то все ок.

Может другим способом нужно действовать или тут что то не так ?
Ответить с цитированием
  #2 (permalink)  
Старый 18.02.2015, 22:09
Аватар для ksa
ksa ksa на форуме
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,213

Сообщение от evgeniy123
Может кто подскажет почему
Посмотри, что у тебя в итоге оказывается в значении
Сообщение от evgeniy123
{{recoverymy|emailfilter}}
Может оно и прояснится...

Начни с простого примера, потом усложняй... Так же поймешь что не так.
Ответить с цитированием
  #3 (permalink)  
Старый 19.02.2015, 14:07
Аватар для ksa
ksa ksa на форуме
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,213

Сообщение от evgeniy123
Сам фильтр отрабатывает правильно так как тестил
Эти фильтры вообще своеобразный механизм... Такй вот вариант

<!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>


Хоть и меняется с каждым разом, но на внешнее представление никак не влияет.
Ответить с цитированием
  #4 (permalink)  
Старый 19.02.2015, 14:15
Аватар для ksa
ksa ksa на форуме
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,213

Сообщение от evgeniy123
Может другим способом нужно действовать
Вот тебе т.с. альтернативный способ

<!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>
Ответить с цитированием
  #5 (permalink)  
Старый 19.02.2015, 14:29
Аватар для ksa
ksa ksa на форуме
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,213

Сообщение от evgeniy123
или тут что то не так ?
В ходе своего исследования я понял, что ты в корне не правильно понимал теорию и применение фильтра.

Вот тебе правильный пример использования директивы 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>
Ответить с цитированием
  #6 (permalink)  
Старый 20.02.2015, 22:28
Аспирант
Отправить личное сообщение для evgeniy123 Посмотреть профиль Найти все сообщения от evgeniy123
 
Регистрация: 19.02.2011
Сообщений: 37

Спасибо. Разобрался. Как понял фильтры нужны только что бы преобразовать данные но никак не для условий
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
on('click') срабатывает не для всего контента andrewks jQuery 9 23.08.2013 11:00
onclick срабатывает со 2 раза в ie djonA Общие вопросы Javascript 19 25.03.2013 01:07
Срабатывает нажатие на button при нажатии Enter внутри input rebeled Элементы интерфейса 19 07.02.2013 16:07
AJAX запрос в Internet Explorer срабатывает через раз nikolayseo jQuery 5 13.11.2012 00:13
Нажатие по дате в календаре срабатывает только со второго клика afr0 Events/DOM/Window 4 31.10.2012 13:39