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 应用程序,观察者可能会有点贵。小的应该问题不大。