attrs.$observe on children in angular 指令?
attrs.$observe on children in angular directive?
是否可以使用 $observe 在指令中观察 children 的属性?
我有这个 HTML 是用我的 "monitor" 指令渲染的。
<monitor>
<div class="panel panel-default">
<div class="panel-heading">
<i class="fa fa-desktop"></i> Monitor <expand class="pull-right"><button class="btn btn-info btn-xs" ng-click="expand()"><i class="fa fa-expand"></i></button></expand>
</div>
<div class="panel-body monitor-blink">
<h4 class="alert-title no-margin">No monitoring </h4>
</div>
</div>
</monitor>
<div class="panel panel-default">
将变为 <div class="panel panel-default expand">
,我正在尝试在添加 class 时在我的 dom 中进行更改。
我考虑过强制执行 $apply,但一直试图让它与 $observe 一起使用。如何在 child 属性上添加 attrs.$observer?
像这样?
attr.$observe(attrs, function(key, val) {
// Do stuff
});
$observer
的第一个参数是什么?这就是我被困的地方
不,$oberve
是监视指令中的插值绑定(例如 some-dynamic-attribute="{{someValue}}"
)。
我不知道这个 child class 是怎么设置的,但是你有两种情况:要么它是由 Angular 设置的,在这种情况下你应该搜索什么导致 angular 设置此 class 然后监视同一事件。
或者如果它是由第三方库设置的,你可能会这样做:
var theChildElement = ...;
scope.$watch(function() { return theChildElement.className; }, function(className) {
// className is the list of classes of that child element, called every time this list changes
});
这会起作用,但是如果您有一个繁重的 angular 应用程序,观察者可能会有点贵。小的应该问题不大。
是否可以使用 $observe 在指令中观察 children 的属性?
我有这个 HTML 是用我的 "monitor" 指令渲染的。
<monitor>
<div class="panel panel-default">
<div class="panel-heading">
<i class="fa fa-desktop"></i> Monitor <expand class="pull-right"><button class="btn btn-info btn-xs" ng-click="expand()"><i class="fa fa-expand"></i></button></expand>
</div>
<div class="panel-body monitor-blink">
<h4 class="alert-title no-margin">No monitoring </h4>
</div>
</div>
</monitor>
<div class="panel panel-default">
将变为 <div class="panel panel-default expand">
,我正在尝试在添加 class 时在我的 dom 中进行更改。
我考虑过强制执行 $apply,但一直试图让它与 $observe 一起使用。如何在 child 属性上添加 attrs.$observer?
像这样?
attr.$observe(attrs, function(key, val) {
// Do stuff
});
$observer
的第一个参数是什么?这就是我被困的地方
不,$oberve
是监视指令中的插值绑定(例如 some-dynamic-attribute="{{someValue}}"
)。
我不知道这个 child class 是怎么设置的,但是你有两种情况:要么它是由 Angular 设置的,在这种情况下你应该搜索什么导致 angular 设置此 class 然后监视同一事件。
或者如果它是由第三方库设置的,你可能会这样做:
var theChildElement = ...;
scope.$watch(function() { return theChildElement.className; }, function(className) {
// className is the list of classes of that child element, called every time this list changes
});
这会起作用,但是如果您有一个繁重的 angular 应用程序,观察者可能会有点贵。小的应该问题不大。