2015-03-25 3 views
1

Я не могу понять, почему мой ng-click внутри моей директивы не запускает clickTest fooControls. Почему clickTest не запускается и не входит в консоль? есть ли лучший способ сделать это?ng-click в угловой директиве

Директива

app.directive('fooList', function() { 
    return { 
     restrict: 'E', 
     templateUrl: './app/views/fooList.html', 
     scope: { obj: "=" }, 
     controller: 'fooController', 
     controllerAs: 'b' 
    }; 
}); 

Controler

app.controller('fooController', ['$scope', function ($scope) { 
    $scope.obj = []; 

    $scope.ClickTest = function (num) {console.log(num);}; 
}]); 

HTML

<div ng-repeat="book in obj" class="container"> 
    <div class="row"> 
     <h4 class="pull-right"><button class="btn btn-small" ng-click="b.ClickTest(1)">ClickTest</button></h4> 
    </div> 
    <br /> 
</div> 

EDIT

Вышеупомянутый html является скопированной папкой foo-list. Полный HTML является

<html> 
<head> 
</head> 
<body> 
<foo-list obj="searchResults"></foo-list> 
</body> 
<html 
+1

В вашем примере коде '' тег даже не используется ... – DanEEStar

+1

Кроме того, почему 'b.ClickTest (1)'. Вы применили ClickTest к своей области, это должно быть просто 'ClickTest (1)' –

+0

спасибо @mcpDesigns, это был псевдоним, который испортил его. У меня это работает в другом проекте, и псевдоним был в порядке. В любом случае удаление псевдонима устраняет проблему. Спасибо – gh9

ответ

1

Вашего HTML должен быть изменен, чтобы иметь функцию ClickTest применяется непосредственно к области, а не переменной в области видимости. Вам также необходимо включить тег <foo-list /> для вашей директивы.

<div ng-repeat="book in obj" class="container"> 
    <div class="row"> 
     <!-- Change b.ClickTest(1) to ClickTest(1)--> 
     <h4 class="pull-right"><button class="btn btn-small" ng-click="ClickTest(1)">ClickTest</button></h4> 
    </div> 
    <br /> 
    <!-- Insert a foo-list tag --> 
    <foo-list obj="searchResults"></foo-list> 
</div> 
Смежные вопросы