가 내 html로 '계산-TD-plan.html' 사용자 지정 지시문에서 함수를 호출 할 수 없습니다. 범위 내가
<tr ng-repeat="foodCalculation in selectedMealCalc.calculated_foods">
<td>{{foodCalculation.food.name}}</td>
<td>{{foodCalculation.gram_amount}} g</td>
<td>{{foodCalculation.kcal}} kcal</td>
<td>{{foodCalculation.proteina}} g</td>
<td>{{foodCalculation.cho}} g</td>
<td>{{foodCalculation.lipideos}} g</td>
<td class="text-center">
<button class="btn btn--principal btn--xs" ng-click="edtiFoodCalc(selectedmealcalc, foodCalculation, $index)">Editar</button>
<button class="btn btn--principal btn--xs" ng-click="removeFoodCalc(selectedmealcalc, foodCalculation)">Remover</button>
</td>
</tr>
그럼 내가 위에서 같은 지침을 만들 안에 이것을 가지고 사용 사용하고자하는 것이 아니다.
<div class="row">
<div class="col-md-12" ng-show="(items | filter: { food_option: option }).length > 0">
Opção {{ option }}
<table class="table table-calculo table-striped">
<thead>
<tr>
<th>Alimento</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="foodCalculation in (items | filter: { food_option: option }) track by $index">
<td>{{foodCalculation.food.name}}</td>
<td class="text-center">
<button class="btn btn--principal btn--xs" ng-click="edtiFoodCalc(selectedmealcalc, foodCalculation, $index)">Editar</button>
<button class="btn btn--principal btn--xs" ng-click="removeFoodCalc(selectedmealcalc, foodCalculation)">Remover</button>
</td>
</tr>
</tbody>
</table>
</div>
</div>
그리고
<div ng-repeat="option in [0,1,2,3,4]">
<meal-option option="{{option}}"
items="selectedMealCalc.calculated_foods"
selectedmealcalc="selectedMealCalc"></meal-option>
</div>
등이 diretive 내부 '계산-TD-plan.html'호출이 내 지시 JS입니다.
'use strict';
angular.module('nutriApp').directive('mealOption', ['$compile', function($compile) {
var mealOption = {
restrict: 'E',
templateUrl: 'views/checkins/meal-options.html',
require: 'foodSelector',
scope: {
option: "@",
items: "=",
selectedmealcalc: "="
}
};
mealOption.controller = ['$scope', 'Food', function($scope, Food) {
$scope.sumFood = {};
$scope.summerizeOption = function(foods) {
if(foods.length > 0){
$scope.sumFood = Food.summerize(foods);
}
};
}];
return mealOption;
}]);
하지만 지금은 edtiFoodCalc
및 removeFoodCalc
를 호출하고있는 함수들이 그냥이 작동하지 않습니다
내 지시문에 ng-controller
을 입력하면 (메서드 호출 만) 작동하지만 동일한 범위를 가져올 수 없습니다.
<div class="row" ng-controller="CheckinsPlansCtrl">
나는 edtiFoodCalc
으로 편집하려고하는데 원하는 결과를 얻지 못했습니다. 나는 ng-repeat
일 때 ng-controller
이 새로운 범위를 만들고, 지시어가 없을 때 코드가 작동했다고 생각한다.
<div ng-repeat="option in [0,1,2,3,4]">
<meal-option option="{{option}}"
items="selectedMealCalc.calculated_foods"
selectedmealcalc="selectedMealCalc"></meal-option>
</div>
당신이'&'바인딩을 사용하여 들여다 본 적이 있습니까? 참조 : https://stackoverflow.com/questions/16839259/angular-calling-controller-function-inside-a-directive-link-function-using – james00794
네 @ james00794,하지만 세 가지 * (selectedmealcalc, foodCalculation, $ index) * 매개 변수이며 지시문 안에 채워지며, 그 중 하나는 $ index입니다. –
매개 변수가 매개 변수 안에 채워져 있는지 여부는 중요하지 않습니다. ** 매개 변수 ** 이름 만 지시문에 전달합니다. 그래서 당신은 다음과 같이 할 것입니다 :' meal-option>'- 이제 지시어 범위 내에서, 'removeFoodCalc ({selectedMealCalc : mCalc, foodCalc : fCalc, 인덱스 : $ 인덱스})'. –
james00794