2013-08-22 4 views
0

Я пытаюсь передать метод от контроллера в мою директиву. Вот как я это делаю:Директива AngularJS: '&' в изолированной области не работает должным образом

В контроллере:

$scope.getEmployees = function() 
{ 
    return {2: 'Jane', 3: 'Bob', 4: 'Smith'}; 
} 

$scope.getSelected = function() 
{ 
    return 3; 
} 

В представлении/HTML:

<mydirective data-placeHolder="Choose an employee.." 
     data-getOpts="getEmployees()" data-getSelected="getSelected()" /> 

В директиве:

var dir = 
{ 
    restrict: 'E', 
    templateUrl : 'views/mydirective.html', 
    scope: { 
     placeholder: '@', 
     getSelected: '&', 
     getOpts: '&' 
    }, 
    controller: ['$scope', '$element', '$attrs', 
     function($scope, $element, $attrs) 
     { 
      console.log($scope.getOpts()); 
     }], 

}; 

MyApp.directive('mydirective', function() 
{ 
    return dir; 
}); 

Однако, следующая строка в контроллере директивы:

console.log($scope.getOpts()); 

Производит неопределенные, а не возвращает объект или функцию, установленную в функции контроллера getEmployees().

Что я делаю неправильно?

ответ

2

Это относится к конвенции об именах. Вам необходимо преобразовать случай верблюда в тире разделенных слов, подобных этому

data-get-opts="getEmployees()" 
+0

@ClickUpvote LOL. Мне нравится это видео ... камни дракона! – zsong

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