AngularJS 1.5+ 组件不支持 Watchers,有什么解决办法? [英] AngularJS 1.5+ Components do not support Watchers, what is the work around?

查看:34
本文介绍了AngularJS 1.5+ 组件不支持 Watchers,有什么解决办法?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我一直在将我的自定义指令升级到新的组件架构.我读过组件不支持观察者.这样对吗?如果是这样,您如何检测对象的变化?对于一个基本的例子,我有一个自定义组件 myBox ,它有一个子组件 game ,在 game 上有一个绑定.如果游戏组件中有更改游戏,我如何在 myBox 中显示警报消息?我知道有 rxJS 方法是否可以纯粹以角度来做到这一点?我的 JSFiddle

JavaScript

var app = angular.module('myApp', []);app.controller('mainCtrl', function($scope) {$scope.name = "托尼·丹扎";});app.component("myBox", {绑定:{},控制器:函数($element){var myBox = this;myBox.game = '魔兽世界';//如果 myBox.game 发生变化,则显示警告消息 'NAME CHANGE'},controllerAs: 'myBox',templateUrl: "/template",转置:真实})app.component("游戏", {绑定:{游戏:'='},控制器:函数($element){var 游戏 = 这个;},controllerAs: '游戏',templateUrl: "/template2"})

HTML

<script type="text/ng-template" id="/template"><div style='width:40%;border:2px solid black;background-color:yellow'>您最喜欢的游戏是:{{myBox.game}}<game game='myBox.game'></game>

<script type="text/ng-template" id="/template2"><div></br>改变游戏<textarea ng-model='game.game'></textarea>

嗨{{name}}<我的盒子></my-box></div><!--end app-->

解决方案

Writing Components without 观察者

这个答案概述了在不使用 观察者.

<小时>

使用ng-change指令

<块引用>

在准备 AngularJs2 时,有哪些替代方法可以在不使用 watch 的情况下观察 obj 状态变化?

您可以使用 ng-change 指令对输入更改做出反应.