AngularJs如何根据Watch Value更改CallBack函数

时间:2016-06-29 20:29:59

标签: javascript angularjs callback watch

我有一个有角度的指令" spyStyle" 我希望尽可能使其可用。 所以...我希望能够根据正在观看的内容调用不同的回调函数。

这是我的代码

.directive('spyStyle', [function () {
        return {
            link: function (scope, element, attrs) {
                scope.$watch(function () {
                    return element.css(attrs['spyAttribute']);
                }, styleChangedCallBack, true);

                function styleChangedCallBack(newValue, oldValue) {
                    if (newValue !== oldValue) {
                        // do something interesting here
                    }
                }
            }
        };

    }]);

1 个答案:

答案 0 :(得分:0)

我相信这已经完成了 - 我必须在watch函数之前运行if语句。 还有其他人有其他建议???

                if ((attrs['spyAttribute']) = 'background-color') {
                    alert("background-color");
                    scope.$watch(function () {
                        element.css('color', 'black');
                        return element.css(attrs['spyAttribute']);
                    }, bgStyleChangedCallBack, true);
                } else {
                    alert("something else");
                    scope.$watch(function () {
                        //element.css('color', 'black');
                        return element.css(attrs['spyAttribute']);
                    }, styleChangedCallBack, true);
                }

以下是完整代码https://jsfiddle.net/acts7/5Ls46ebx/

full指令检查元素的背景颜色并更改文本以使其可读。 然后检查背景颜色是否发生变化,并在必要时应用新的文本颜色。