2014-12-12 3 views
6

я создал пользовательскую директиву angularjs:Angularjs Пользовательские Директива нг щелкните не работает

directives.directive('myTop',function($compile) { 
return { 
    restrict: 'E', 
    templateUrl: 'views/header.html', 
} 
}) 

код директивы:

<div class="my-header"> 
<button ng-click="alert('x')" class="fa fa-chevron-left"></button> 
<h1>SpeakZ</h1> 
</div> 

по какой-то причине, нг-нажмите doesen't курок.

Я искал через Интернет и обнаружил, что компиляция/ссылка является решением этой проблемы, , но я не могу найти рабочего решения.

Я не использую JQuery ..

+2

оповещения не работает в 'нг-click' вместо этого он будет Seach для' $ scope.alert' функции в рамках –

+0

первоначально я попытался положить: $ location.path ('/') внутри нг -click .. dosen't work –

+0

, что '$ location' не существует в' $ scope' – ryeballar

ответ

10

Вам нужно добавить link функцию определения директивы для этой работы. Таким образом, в основном,

var app = angular.module("myApp", []) 

app.directive('myTop',function() { 
return { 
    restrict: 'E', 
    template: '<button ng-click="clickFunc()">CLICK</button>', 
    link: function (scope) { 
     scope.clickFunc = function() { 
      alert('Hello, world!'); 
     }; 
    } 
} 
}) 

И HTML:

<div ng-app="myApp"> 
    <my-top></my-top> 
</div> 

И вот скрипку: http://jsfiddle.net/4otpd8ah/

+0

Что вы подразумеваете под нативными функциями? – Ashesh

+0

изначально я попробовал поставить: $ location.path ('/') внутри ng-click .. не работает –

+1

Это не сработает. У вас должна быть функция, определенная в области действия директивы (в случае над ее scope.clickFunc), которая делает что-то в зависимости от того, что вам нужно. '$ location' также нужно будет ввести в директиву. – Ashesh

1

Либо используйте ссылку, как ответил на @Ashesh или просто добавить объем. Если вы установите область false, у вас не будет выделенной области, и щелчок будет работать с директивой.

directives.directive('myTop',function($compile) { 
return { 
    restrict: 'EA', 
    scope: false, 
    templateUrl: 'views/header.html', 
    } 
}) 
Смежные вопросы