js+监视html发生变化,javascript-Angularjs监视父范围的更改

我建议您使用控制器之间的$ broadcast执行此操作,这似乎是父/子控制器之间进行通信的角度方式

这个概念很简单,您可以在父控制器中观察值,然后在发生修改时将其广播并在子控制器中捕获它

这是展示它的小提琴:[http://jsfiddle.net/DotDotDot/f733J/]

父控制器中的部分如下所示:

$scope.$watch('overlaytype', function(newVal, oldVal){

if(newVal!=oldVal)

$scope.$broadcast('overlaychange',{"val":newVal})

});

并在子控制器中:

$scope.$on('overlaychange', function(event, args){

console.log("change detected")

//any other action can be perfomed here

});

使用此解决方案的好处是,如果您想在另一个子控制器中观看修改,则可以捕获相同的事件

玩得开心

编辑:我没有看到您上一次编辑,但是我的解决方案也适用于该指令,我更新了上一个小提琴([http://jsfiddle.net/DotDotDot/f733J/1/])

我修改了您的指令,以强制其创建子范围并创建控制器:

directive('center',function($window){

return {

restrict : "A",

scope:true,

controller:function($scope){

$scope.overlayChanged={"isChanged":"No","value":""};

$scope.$on('overlaychange', function(event, args){

console.log("change detected")

//whatever you need to do

});

},

link : function(scope,elem,attrs){

var resize = function() {

var winHeight = $window.innerHeight - 90,

overlayHeight = elem[0].offsetHeight,

diff = (winHeight - overlayHeight) / 2;

elem.css('top',diff+"px");

};

angular.element($window).bind('resize',function(e){

console.log(scope.$parent.data.overlaytype)

resize();

});

}

};

});

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值