gpt4 book ai didi

javascript - AngularJS 指令 - 链接功能不触发

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:07:55 28 4
gpt4 key购买 nike

我要实现的目标:将 cordova native 处理程序包装在一个 Angular Directive(指令)中

我想使用指令包装器为 Cordova 的 native 事件实现处理程序(以便监听主体加载事件)。

我有以下指令样板:

angular.module('vitaApp')
.directive('cordovaNative', function () {
return {
restrict: 'A',
compile: function (element, attrs, transcludeFn) {
alert('compile fired');
element.bind('load', function(){
alert('load occured');
});
},
link: function postLink(scope, element, attrs) {
alert('link fired');
element.bind('load', function(){
alert('load occured');
});
}
};
});

实例化如下:

<body ng-app="vitaApp"  ng-controller="metaCtrl" ng-swipe-right="showMenu()"  ng-swipe-left="hideMenu()" cordova-native>

cordovaNative 指令的编译函数会触发,但链接函数不会。

它会不会与 ng-swipe 指令有关(例如“{terminal: true}”)?

注意:我并不是要同时使用 compilelink,我只是想证明它们中的任何一个都不是为了订阅 单独加载事件。

最佳答案

您不能在指令中同时具有编译和链接功能。如果你使用 compile 你应该返回一个函数,它本身就是一个链接函数。于是上面的代码就变成了:

 compile: function (elem, attrs, transcludeFn) {
alert('compile fired');
return function(scope, element, attrs) {
alert('link fired');
element.on('load', function(){
alert('load occured');
});
}
},

更新:由于指令链接函数在元素加载后运行(大部分情况下),因此可能不需要在指令链接函数中添加 element load 事件处理程序。

关于javascript - AngularJS 指令 - 链接功能不触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26358832/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com