我对指令比较陌生,而且我有一些代码,我从几个不同的来源汇总了这些代码。首先,我试图将指令更改为CamelCase,因此指令的名称将类似于myResize,但我似乎无法做到。我知道angular会进行规范化,所以我知道我的div应该是my-resize,而我的指令应该是myResize但是这不起作用?
另外,有人可以解释一下绑定范围究竟是什么。$ apply函数正在做什么?我认为当scope.getWindowDimensions发生变化时,单独使用$ watch会更新scope.adjustForm,但显然情况并非如此。代码工作正常,我不知道为什么。
<div id='landingWrapper' ng-class='{"centerForm": adjustForm}' resize></div>
.directive('resize', function ($window) {
return function (scope, element) {
var w = angular.element($window);
scope.getWindowDimensions = function () {
return { 'h': w.height(), 'w': w.width() };
};
scope.$watch(scope.getWindowDimensions, function (newValue, oldValue) {
var windowHeight = newValue.h;
var formHeight = element[0].offsetHeight;
if (formHeight > windowHeight) {
scope.adjustForm = false;
}
else {
scope.adjustForm = true;
}
}, true);
w.bind('resize', function () {
scope.$apply();
});
}
})
答案 0 :(得分:2)
你问了几件事:
myResize
),而在HTML上则应使用短划线(my-resize
)。如果它不适合你,那么别的东西就错了。$apply()
触发$digest()
),这会强制角度通过所有&#34;当前& #34;范围,看看是否有变化。$apply()
或者$digest()
)只要jQuery发生了一个事件。