2016-09-17 120 views
0

处理事件我有以下AngularJS指令(在底部)时,如果点击链接saveClick()然后应显示的警告窗口:AngularJS从指令的控制器

<span save-click="alert('hallo ich binssdsd')" data-ng-dropdown-multiselect options="vm.translatedRoles" selected-model="vm.selectedRoles" external-id-prop="label"></span> 

但没有任何反应。有谁知道我做错了什么?

directiveModule.directive('ngDropdownMultiselect', ['$filter', '$document', '$compile', '$parse', '$rootScope', 
function ($filter, $document, $compile, $parse, $rootScope) { 

    return { 
     restrict: 'AE', 
     scope: { 
      selectedModel: '=', 
      options: '=', 
      extraSettings: '=', 
      events: '=', 
      searchFilter: '=?', 
      translationTexts: '=', 
      groupBy: '@', 
      saveClick: '&' 
     }, 
     template: function (element, attrs) { 
      var checkboxes = attrs.checkboxes ? true : false; 
      var groups = attrs.groupBy ? true : false; 

      var template = '<div class="multiselect-parent btn-group dropdown-multiselect">'; 
      template += '<li><a data-ng-click="saveClick()"><span class="glyphicon glyphicon-floppy-disk"></span> {{texts.save}}</a>'; 
      ... 
+0

所以你要调用一个'控制器'f从'指令'的联合?看看这[小提琴](http://jsfiddle.net/u748hLvn/4/)。通过[如何创建一个最小,完整和可验证的示例](http://stackoverflow.com/help/mcve) – Paritosh

回答

0

您需要将链接函数添加到指令定义对象以使警报生效。

下面是示例代码:

directive.js

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

app.directive('testAlert',function() { 
    return { 
    restrict: 'E', 
    template: '<button ng-click="alertClick()">Test</button>', 
    link: function (scope) { 
     scope.alertClick = function() { 
     alert('Welcome!'); 
    }; 
    } 
    } 
}); 

的index.html

<div ng-app="myApp"> 
    <test-alert></test-alert> 
</div> 

WorkingExample