Data binding 我应该如何绑定到元素';在一个角度的指令中是什么样的风格?
我想绑定到指令中绝对定位元素的Data binding 我应该如何绑定到元素';在一个角度的指令中是什么样的风格?,data-binding,angularjs,styles,bind,directive,Data Binding,Angularjs,Styles,Bind,Directive,我想绑定到指令中绝对定位元素的top样式。这可能吗 以下是我想在编造代码中执行的操作: angular.module('exampleModule').directive('resize', [function () { return { link: function(scope, iElement, iAttrs) { var top = 14; // There is no styleChange event iEl
top
样式。这可能吗
以下是我想在编造代码中执行的操作:
angular.module('exampleModule').directive('resize', [function () {
return {
link: function(scope, iElement, iAttrs) {
var top = 14;
// There is no styleChange event
iElement.bind('styleChange', styleChangeHandler);
function styleChangeHandler(event) {
if(event.style == 'top' && event.value != top) {
scope.$apply(function(scope){
scope[iAttrs.topChanged](event.value);
});
}
}
}
}
}]);
没有样式更改事件。如果您可以控制样式更改,则可以创建自定义事件并手动触发该事件。或者你可以创建一个手表功能,类似这样:
链接:功能(范围、IELENT、iAttrs){
//...
范围$watch(函数(){
返回iElement.css('top');
},styleChangeFn,true);
函数styleChangeFn(值,旧){
如果(值!==旧)
范围[iAttrs.topChanged](值);
}
}
没有样式更改事件。如果您可以控制样式更改,则可以创建自定义事件并手动触发该事件。或者你可以创建一个手表功能,类似这样:
链接:功能(范围、IELENT、iAttrs){
//...
范围$watch(函数(){
返回iElement.css('top');
},styleChangeFn,true);
函数styleChangeFn(值,旧){
如果(值!==旧)
范围[iAttrs.topChanged](值);
}
}
以下是我的想法(joakimbl的回答极大地帮助了我)。它适用于观看任何风格的节目
该指令:
angular.module('unwalked.directives').directive('watchStyle', [function () {
return {
link: function(scope, iElement, iAttrs) {
scope.$watch(function(){
return iElement.css(iAttrs['watchedStyle']);
},
styleChanged,
true);
function styleChanged(newValue, oldValue) {
if(newValue !== oldValue) {
scope[iAttrs['watchStyle']](newValue);
}
}
}
};
}]);
用法(注意:回调上没有括号-只是函数名):
以下是我的想法(joakimbl的回答极大地帮助了我)。它适用于观看任何风格的节目 该指令:
angular.module('unwalked.directives').directive('watchStyle', [function () {
return {
link: function(scope, iElement, iAttrs) {
scope.$watch(function(){
return iElement.css(iAttrs['watchedStyle']);
},
styleChanged,
true);
function styleChanged(newValue, oldValue) {
if(newValue !== oldValue) {
scope[iAttrs['watchStyle']](newValue);
}
}
}
};
}]);
用法(注意:回调上没有括号-只是函数名):
这不起作用,因为styleChangeFn不在范围内,但谢谢。这让我走上了正确的道路。我假设styleChangeFn
将在link函数中声明,并且可以访问作用域,进行了更新以澄清问题是scope
在styleChangeFn
@Pedr中不可用,因为styleChangeFn
是在link函数中定义的,范围在styleChangeFn
中可用。这是我的想法,但范围似乎有所改变。以下内容用作回调(如果您在前面声明var self=this;
):函数(newValue,oldValue){testFunction.call(self,newValue,oldValue)}
。也许我在做一些奇怪的事情…这不起作用,因为styleChangeFn不在范围之内,但是谢谢。这让我走上了正确的道路。我假设styleChangeFn
将在link函数中声明,并且可以访问作用域,进行了更新以澄清问题是scope
在styleChangeFn
@Pedr中不可用,因为styleChangeFn
是在link函数中定义的,范围在styleChangeFn
中可用。这是我的想法,但范围似乎有所改变。以下内容用作回调(如果您在前面声明var self=this;
):函数(newValue,oldValue){testFunction.call(self,newValue,oldValue)}
。也许我在做一些奇怪的事。。。