Вы забыли зарегистрировать слушателей по нажатию кнопок:
<button ng-click="increment()">+</button>{{Holder.value}}
Надеюсь, это поможет. Полный рабочий пример ниже:
<!DOCTYPE html>
<html>
<head>
<title>AngularJS Services</title>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.0-beta.5/angular.min.js"></script>
</head>
<body>
<div ng-app="dataServiceApp">
<div ng-controller="ChildCtrl">
<h2>First controller</h2>
<button ng-click="increment()">+</button>{{Holder.value}}
</div>
<div ng-controller="ChildCtrl2">
<h2>Second controller</h2>
<button ng-click="increment()">+</button>{{Holder.value}}
</div>
</div>
<script>
var myapp = angular.module("dataServiceApp",[]);
myapp.factory('Holder', function() {
return {
value: 0
};
});
myapp.controller('ChildCtrl', function($scope, Holder) {
$scope.Holder = Holder;
$scope.increment = function() {
$scope.Holder.value++;
};
});
myapp.controller('ChildCtrl2', function($scope, Holder) {
$scope.Holder = Holder;
$scope.increment = function() {
$scope.Holder.value++;
};
});
</script>
</body>
</html>
p.s. Я также полностью согласен с комментарием Дж. Б. Низета: проверьте, действительно ли вам нужно изучать AngularJS вместо Angular 2-7 / VueJS / React.
Если вам действительно нужен один большой regex, то он будет выглядеть примерно так:
(?=^.{8,255}$)((?=.*\d)(?=.*[A-Z])(?=.*[a-z])|(?=.*\d)(?=.*[^A-Za-z0-9])(?=.*[a-z])|(?=.*[^A-Za-z0-9])(?=.*[A-Z])(?=.*[a-z])|(?=.*\d)(?=.*[A-Z])(?=.*[^A-Za-z0-9]))^.*
Обратите внимание, что он также заставляет длину пароля быть от 8 до 255 символов. Вы можете изменить часть "{8,255}" в первом разделе, чтобы скорректировать требования к длине. Также стоит отметить, что у меня это работает в стандартном элементе управления ASP.NET RegularExpressionValidator.
Matches: "Passw0rd" "passW@rd" "1B2a345@#$%"
Не совпадения: "123123123" "Password" "asdf&"
Источник (Matthew Hazzard via RegExLib.com)
Вам нужно будет создайте регулярное выражение следующим образом:
rule = [ "[a-z]", "[A-Z]", "[0-9]", "[!@#$%\^\&\(\)\+=]" ]
regex = ""
first = true
for a in 0..3:
for b in 0..3:
if a == b: continue
for c in 0..3:
if a == c or b == c: continue
if not first:
regex += "|"
regex += "(" + rule[a] + ".*" + rule[b] + ".*" + rule[c] + ")"
first = false
Я не уверен, правильно ли я экранировал специальные символы. Это зависит от используемого вами языка / инструментария.
Does it have to be all one big regex? You could do 4 regexes, each checking one thing and then make sure 3 of the 4 are matches. That would be easier, less error prone and more maintainable.