2015-03-03 2 views
0

Я строю пользовательские директивы как-то вроде этогоУгловая Пользовательские Directive вызовов Встроенные функции

app.directive('confirmation', function() { 
    return { 
    restrict: 'A', 
    scope: { 
    onConfirm:"&" 
    }, 
    link: function (scope, element) { 
     $(element).confirmation(function(){ 
     onConfirm: function(){ 
      scope.onConfirm(); 
     } 
     }); 
    } 
    }; 
}); 

и использовать его как этот

<script> 
     function DoSomethingOnConfirm(){ 
        //Do Something; 
        } 
    </script> 
<a confirmation on-confirm="DoSomethingOnConfirm()">Delete</a> 

У меня нет доступа к контроллеру, так что функция " DoSomethingOnConfirm() « - обычная функция javascript, как я могу вызвать эту функцию внутри директивы, я пробовал называть ее напрямую, но это не сработало.

ответ

1

С вашего вопроса я понимаю, что вы хотели называть javascript из вашей директивы. Я считаю, что в этом случае вы хотели бы вызвать некоторую функцию, когда пользователь нажимает директиву метки привязки.

Вот код

<script> 
var app = angular.module('app', []); 
app.directive('confirmation', function() { 
    return { 
    restrict: 'A', 
    link: function (scope, element, attr) {   
     element.on('click',function(){ 
      eval(attr.fname); 
     }); 
    } 
    }; 
}); 
function DoSomethingOnConfirm(){ 
    alert("Are you sure want to delete?"); 
} 
function AddMe(){ 
    alert("Added!!!"); 
} 


</script> 

<a confirmation href="javascript:;" fname="DoSomethingOnConfirm()">Delete</a> 
<a confirmation href="javascript:;" fname="AddMe()">Add</a> 

Вместо того, чтобы внешнее имя функции из сферы, я получаю его от атрибута и запуска этой функции.

Надеюсь, это поможет

Смежные вопросы