я директива определена так:Обновление родительского объекта из изолированного объема в директиве не работает на всех
myApp.directive('someDirective', function() {
return {
restrict: 'A',
scope: {
disableButton: '=',
},
templateUrl: 'sometemplate.html',
controller: 'SomeDirectiveController'
}
});
Контроллер для директивы выглядит следующим образом:
mLoan.controller('GiversDirectiveController', function (
$scope,
) {
$scope.checkGiversAmount = function() {
var giversCurrentTotalValue = $scope.stocksTotalAmount - $scope.giversCurrentAmount;
}
это мнение директива
<div class="row">
<div class="col-lg-2">
<label for="customer">Wybierz klienta</label>
<select id="customer"
name="customer"
class="form-control"
ng-model="selectedCustomerId"
ng-options="customer.Id as customer.Name for customer in customers"
ng-change="getGiversFunds(selectedCustomerId)"
required=""></select>
</div>
<div class="col-lg-2" ng-show="customerFunds.length > 0">
<label for="customerFunds">Wybierz fundusz</label>
<select id="customerFunds"
name="customerFunds"
class="form-control"
ng-model="selectedFundId"
ng-options="customerFund.Id as customerFund.Name for customerFund in customerFunds"
ng-blur="updateGiverFund(selectedCustomerId, selectedFundId)"
ng-required="customerFunds.length > 0"></select>
</div>
<div class="col-lg-2">
<label for="giversCurrentAmount">Ilość</label>
<input type="number" min="1"
max="{{giversCurrentAmount}}"
id="giversCurrentAmount"
name="giversCurrentAmount"
class="form-control"
ng-model="giversCurrentAmount"
ng-change="checkGiversAmount(selectedFundId)"
ng-blur="updateGiverStockAmount(selectedCustomerId, giversCurrentAmount)"
required />
</div>
<div class="col-lg-2">
<label for="commission">FEE%</label>
<input type="number"
min="1"
id="commission"
name="commission"
class="form-control"
ng-model="commission"
ng-blur="updateGiverCommission(selectedCustomerId, commission)"
required />
</div>
<div class="col-lg-4">
<label for="minimalCommission">FEE Min</label>
<input type="number"
min="1"
id="minimalCommission"
name="minimalCommission"
class="form-control"
ng-model="minimalCommission"
ng-blur="updateGiverMinimalCommission(selectedCustomerId, minimalCommission)"
required />
</div>
</div>
И родительский вид, в котором я использую директиву с помощью кнопки:
<div ng-repeat="giver in givers">
<div givers-directive givers="givers"
givers-current-amount="giversCurrentAmount"
disable-giver-side-add="parent"
stocks-total-amount="stocksTotalAmount">
</div>
</div>
<div class="row">
<div class="col-lg-12 margin-top-10px">
<button id="addGiverSide"
name="saveLoan"
class="btn btn-primary"
ng-click="addGiverSide(AddLoansForm)"
ng-disabled="disableButton">
Dodaj
</button>
</div>
</div>
Теперь моя проблема и вопрос в то же время, как я могу обновить disableButton fr о родительской модели. Прежде чем вы скажете, что это дубликат, я столкнулся с решениями, которые были на stackoverflow в основном: How to access parent scope from within a custom directive *with own scope* in AngularJS? и тот один: What are the nuances of scope prototypal/prototypical inheritance in AngularJS?, но ничего не помогает. Что такое straneg (или нет), я не могу использовать $ parent для этого. Я должен пройти через: $ scope. $ Parent. $ Parent path, а затем он обновляется. Кроме того, он выглядит уродливым и странным, он не работает, когда я пытаюсь обновить эту переменную из родительского представления. Подводя итог, один эффект работает, а другой - нет. И после изменения происходит наоборот. Я попытался завернуть кнопку disable в объект и попытаться сделать изменение, но это тоже не сработает. Или, может быть, я делаю это неправильно. Пожалуйста, любезно помогите мне, потому что у меня заканчиваются идеи. Что я делаю не так?
UPDATE
Я добавляю остальные точки зрения директивы, чтобы показать концепцию, что я пытаюсь достичь здесь. Есть понижения, которые я хочу, чтобы они были независимыми. Поскольку без директивы с разделенной (или изолированной) областью, два выпадающих списка заполняются, изменяя другое. Я хочу изменить их независимо. Мне удалось достичь этой цели. Но теперь я не могу заставить кнопку отключения работать.
Я пробовал это, но это не помогло также. Я обнаружил, что у меня также есть директива ng-repeat. У этого также есть область видимости, поэтому я, вероятно, должен пройти через $ scope. $ Parent. $ Parent. Первый $ parent - это уровень ng-repeat, а следующий - тот, который я ищу. Я переместил ng repeat в обратный вид, и я увижу, что я придумаю, когда вы это сделаете. –