Я вызываю метод из итератора ng-repeat
. Но я не получаю метод, вызываемый в области. кто-нибудь поможет мне разобраться в этом?angularjs с использованием функции видимости `ng-repeat`, которая не называется
вот мои ЯШИ:
var app = angular.module('plunker', []);
app.controller('MainCtrl', function($scope) {
$scope.levels = {'title':'Select a Level', item:["Low", "Medium", "Hight"], show:false };
$scope.stages = ["Open", "Inprogress", "Closed"];
$scope.colors = ["Red", "Yellow", "Blue"];
$scope.levelHandler = function (level) {
console.log(level); //not called
}
});
app.directive('dropDown', function() {
return {
replace:true,
scope :{
data:"="
},
template : $('#dropdown').html(),
link:function (scope, element, attrs) {
var title = element.find('.title');
var listHolder = element.find('ul');
var parent = title.add(listHolder);
var list = element.find('li');
title.on('click', function (e) {
scope.data.show = !scope.data.show;
scope.$apply();
});
parent.add(listHolder).on('mouseleave', function (e) {
scope.data.show = !scope.data.show;
scope.$apply();
});
}
}
})
HTML:
<body ng-controller="MainCtrl">
<form name="myform">
<drop-down data="levels" ></drop-down>
</form>
<script type="text/ng-template" id="dropdown">
<div class="formGroup">
<h4 class="title">{{data.title}}</h4>
<ul ng-show='data.show'>
<li ng-repeat="level in data.item" ng-click="levelHandler(level)" >{{level}}</li>
</ul>
</div>
</script>
</body>
Ваша директива может быть выполнена без jQuery. См. [Этот PLUNKER] (http://plnkr.co/edit/9iA0Mfl57Bt5cFKg8E62?p=preview). – georgeawg