Я обновлял свои пользовательские директивы до новой архитектуры компонентов. Я читал, что компоненты не поддерживают наблюдателей. Это правильно? Если так, как вы обнаруживаете изменения на объекте? Для базового примера у меня есть пользовательский компонент myBox
который имеет дочерний компонент game с привязкой к игре. Если в игровом компоненте есть игра с изменениями, как мне показать предупреждение в myBox? Я так понимаю, есть метод rxJS, возможно ли сделать это чисто по-угловому? Мой JSFiddle
JavaScript
var app = angular.module('myApp', []);
app.controller('mainCtrl', function($scope) {
$scope.name = "Tony Danza";
});
app.component("myBox", {
bindings: {},
controller: function($element) {
var myBox = this;
myBox.game = 'World Of warcraft';
//IF myBox.game changes, show alert message 'NAME CHANGE'
},
controllerAs: 'myBox',
templateUrl: "/template",
transclude: true
})
app.component("game", {
bindings: {game:'='},
controller: function($element) {
var game = this;
},
controllerAs: 'game',
templateUrl: "/template2"
})
HTML
<div ng-app="myApp" ng-controller="mainCtrl">
<script type="text/ng-template" id="/template">
<div style='width:40%;border:2px solid black;background-color:yellow'>
Your Favourite game is: {{myBox.game}}
<game game='myBox.game'></game>
</div>
</script>
<script type="text/ng-template" id="/template2">
<div>
</br>
Change Game
<textarea ng-model='game.game'></textarea>
</div>
</script>
Hi {{name}}
<my-box>
</my-box>
</div><!--end app-->