Я пытаюсь создать пользовательскую директиву, в которой будут отображаться различные кнопки на основе атрибута. Одна из кнопок требует обработчика события click, и я хочу обработать его в директиве, так как на этой странице будет несколько экземпляров этой директивы. Я попробовал код ниже, но безрезультатно.Angularjs Обработка событий по ссылке в ссылке
'use strict';
angular
.module('test-template', [])
.directive('testTemplateBricks', [
'$compile',
'$timeout',
function($compile,$timeout) {
return {
restrict: 'A',
link: function($scope, iElm, iAttrs, controller) {
var el = "";
if(iAttrs.needImg=="true")
{
el += '<input type="file" style="display:none;" class="browse-file"/><button class="btn btn-info" ><span class="glyphicon glyphicon-picture" ng-click="browse()"></span></button>';
}
if(iAttrs.needTxt=="true")
{
el += ' <button class="btn btn-info"><span class="glyphicon glyphicon-pencil"></span></button>';
}
$compile(el)($scope);
iElm.append(el);
$scope.browse = function() { console.log("browsing");};
$timeout(function(){
iElm.on("click",function(e){
console.log("Browsing");
iElm.find("input[type=file]").click();
});
});
}
};
}
]);
EDIT: http://plnkr.co/edit/bNRLvWjEE7LLvhwRFIae?p=preview
В этом примере я хочу, чтобы отобразить скрытый браузер файлов при нажатии кнопки изображение кнопки.
Есть ли у вас какие-либо ошибки на консоли? Из моего чека кажется, что вход не найден, и метод 'click' не определен. – Dvir
Было бы здорово, если бы вы могли предоставить рабочий plnkr. –
@Dvir Ошибок нет, но $ scope.browse вообще не запускается с таймаутом. Я получаю консоль.log, однако каждый клик регистрирует около 100 журналов, а вторая строка с типом ввода, похоже, не работает , Поэтому я думаю, что вы правы, что элемент ввода отсутствует, но он отображается на странице. Любые решения? –