Не срабатывает 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, время: 22:59. |