Вот мой код:изолированном осциллографа не влияет на его родителей
<html ng-app="myApp">
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.7/angular.min.js"></script>
<body>
<div ng-controller="myController">
<input type="text" class="form-control" name="value" restrictions error-message=errorMessage />
<span style="color:red;margin-left:50px">{{errorMessage}}</span>
</div>
<script>
angular.module('myApp',[])
.controller('myController', function ($scope){
$scope.errorMessage="Football game";
})
.directive('restrictions', function() {
return {
scope: {
errorMessage:'='
},
link:function(scope,element){
element.on('click', function(event) {
event.preventDefault();
console.log(scope.errorMessage); // Football game
scope.errorMessage="Invalid characters";
console.log(scope.errorMessage); //Invalid characters
});
}
}
});
</script>
</body>
</html>
Это то, что я не могу объяснить, почему {{errorMessage}}
не меняется на «недопустимые символы» и по-прежнему показывает «Футбольный матч». Я думаю, что scope.errorMessage совпадает с $ scope.errorMessage из-за errorMessage:'='
. Кроме того, я знаю эту область. $ Parent === $ scope. Любое объяснение?
Как вы говорите, у вас есть изолированный объект '$ scope'. Он наследует от родителя, поэтому изменения от родителя будут отражаться в дочернем элементе, но не наоборот – devqon
Однако errorMessage должен влиять на родителя из-за '=' –
Да, извините, я пропустил этот. Я думаю, что вы должны запускать '$ digest' из углового вручную, потому что' on ('click' .. 'происходит вне его:' scope. $ Apply (function() {scope.errorMessage = ..}); ' – devqon