【发布时间】:2019-01-11 06:40:39
【问题描述】:
如何在控制器 AngularJS 中观察指令中的变量?
我有一个带有控制器和指令的组件
在我的指令中,我正在监听滚动,如果元素在视图中则返回 true,否则返回 false。
我希望能够在控制器中访问我的boolChangeClass 变量,以便只有当它为真时才能调用我的函数。
我的问题是如何在控制器中访问boolChangeClass?
'use strict';
angular.module('myModule')
.component('myComponent', {
template: `
<div class="component" inview ng-class="{min: boolChangeClass}">
</div>
`,
controller: function ($scope) {
let $ctrl = this;
let func = () => {console.log('my function')}
$scope.$watch('boolChangeClass', func);
}
})
.directive('inview', ($window) => {
return function(scope, element, attrs) {
angular.element($window).bind("scroll", function() {
let rect = element[0].getBoundingClientRect();
scope.boolChangeClass = rect.bottom > 0 &&
rect.right > 0 &&
rect.left < (window.innerWidth || document.documentElement.clientWidth) &&
rect.top < (window.innerHeight || document.documentElement.clientHeight)
scope.$apply();
});
};
})
【问题讨论】:
标签: angularjs angularjs-directive angularjs-components