javascript - AngularJS 自定义指令传递函数未定义
问题描述
所以我创建了一个指令,当点击时应该表现得像 ng-click`,这意味着通过 html 传递的任何函数都应该工作。当我记录属性等时,它会显示该功能,但是当我单击时没有任何反应,并且日志中的功能显示未定义
指示:
(function() {
'use strict';
angular
.module('suggestBox')
.directive('sbClickItem', [ function() {
return {
restrict: 'E',
scope: {
callback: '&'
},
link: function ($scope, $element, $attrs){
$element.on('click', function(){
console.log('clicked');
console.log($scope.callback());
$scope.callback();
})
}
}
}])
})();
点击在它输出日志时被注册,但是当你记录$scope.callback()
它的未定义并且在没有()的情况下记录时它显示ƒ (b){return s(a,b)}
HTML:
<sb-click-item callback="vm.onFunc1()" class="sbClickItem"> {{s.name}} </sb-click-item>
JS:
(function(){
'use strict';
angular
.module('demo', ['suggestBox'])
.controller('demo', ['$scope', '$element', '$timeout', function($scope, $element, $timeout){
var vm = this;
vm.onChange1 = function(){
console.log('Change');
}
vm.onFunc1 = function(){
alert('name');
}
}]);
})();
任何帮助将不胜感激。
编辑:它本身就可以工作:
<sb-click-item callback="vm.onFunc1()" class="sbClickItem"> {{s.name}} </sb-click-item>
但是当它像这样嵌套时它不会:
<div class="title">Example 1: Check selected items behaviour.</div>
<div suggest-box sb-list="vm.names" sb-model="vm.model1" sb-key-fields="name" sb-search-fields="name" class="suggest-box" sb-on-selection-change="vm.onChange1()" >
<div class="select">
<div class="input">
<div sb-selection-item class="selection-item"><sb-click-item callback="vm.onFunc1()" class="sbClickItem"> {{s.name}} </sb-click-item> <span sb-remove-item-from-selection class="rem-btn"><i class="fa fa-times"></i></span></div>
<input sb-trigger-area sb-type-ahead tabindex="1">
</div>
<button sb-trigger-area><i class="fa fa-chevron-down"></i></button>
</div>
<ul class="dropdown">
<li sb-dropdown-item class="item">{{i.name}} ({{i.email}})</li>
</ul>
</div>
解决方案
推荐阅读
- python - 使用 TCPS 连接 - ora-28759:无法打开文件
- javascript - 将事件发射到外部组件文件夹中?我已经做了一些事情,但它没有听发射事件“功能”?
- swift - 在 Swift 中加载具有安全范围的 URLBookmark
- swift - 在不更改 currentUser.uid 的情况下注册用户
- java - 这些链表方法的区别
- python - 有没有办法在 Sklearn 中直接访问交叉验证中的每个折叠?
- java - 导入证书时使用 Keytool 创建 Truststore
- java - 我是一个初学者,试图为java中的按钮制作一个点击监听器,你能帮我吗?
- javascript - 使用 React 显示弹出窗口时隐藏 NavBar
- php - 如果不存在如何创建一个新文件并写入它?