Я изучаю директивы, это классно, но иногда немного сложно. Пожалуйста, может кто-нибудь объяснить это: У меня есть настраиваемая директива с шаблоном небольшого размера и его собственная локальная область, и вы хотите изменить список элементов из основного контроллера. Пожалуйста, смотрите его: При нажатии на кнопку изменения я открыть собственную директиву с шаблоном формы вводаКак передать значение в локальную область действия директивы?
<body ng-controller="testCtrl">
<h1>Hello Plunker!</h1>
<ul>
<li ng-repeat="item in list">
<div> {{item}} </div>
<button ng-click="edit()">Change</button>
<change ng-if='editable'></change>
</li>
</ul>
</body>
«Изменить» обычай директивы с входной формы внутри другого Html файла
.directive('change', function(){
return {
restrict: "E",
replace: true,
scope: {
show: '='
},
templateUrl: "other.html"
}
})
Также есть другая директива внутри директивы «change». Это кнопка, которую я хочу использовать внутри директивы «change» и внутри моего основного контроллера. Я могу видеть список товаров только из области. $ Parent.item, но как передать его в функции моей директивы кнопок? Как это реализовать?
.directive('save', function(){
return {
restrict: "E",
replace: true,
template: ' <button class="btn btn-sm btn-warning" ng-click="saving(item)">SAVE</button>',
link: function(scope,element,attr){
scope.saving = function(item){
console.log(item);
console.log(scope.$parent.item)
}
}
}
})
Пожалуйста, смотрите пример: Plnkr
P.S. Извините за мое объяснение, я надеюсь, что все ясно.
нужно понимать, что у вас есть несколько областей происходит. Первый 'ng-repeat' создает дочернюю область для каждого повторяющегося элемента. У вашей директивы изменения есть выделенный объем. Поэтому 'save' внутри' change' наследует изолированную область, которая не включает 'item' в этой изолированной области. У 'save' вне' change' есть доступ к элементу в дочерней области 'ng-repeat'. Действительно важно понимать концепции сферы.попробуйте проверить их в dev tools – charlietfl
Предложите вам передать 'item' в' change', так как вы выделили эту область. Общее правило - если вы ищете '$ parent', вы, вероятно, делаете что-то неправильно – charlietfl
Я думаю, что я до сих пор не понял, какой конечный результат вы ожидаете. – Gabriel