Вызов функции условно в AngularJS
Я добавляю атрибут к кнопке delete с помощью легкого jQuery, который поставляется вместе с AngularJS (это то, что сказано из источника, где я нашел решение) , как показано ниже:
if (item.CustomerGuid == item.OwnerCustomerGuid) {
$scope.isDeleteDisabled = false;
$('#deleteFreight').attr("ng-click", "FreightGroup_delete(" + item.ListGuid + ", " + item.CustomerGuid + ")");
} else {
$scope.isDeleteDisabled = true;
}
Когда я проверяю, изменение отражается, но когда я пытаюсь нажать на кнопку, нужная функция не вызывается.
Нужна помощь.
.cshtml (before):
<button class="btn btn-danger" ng-disabled="isDeleteDisabled"
id="deleteFreight">Delete Freight Group </button>
(после):
<button class="btn btn-danger active" ng-disabled="isDeleteDisabled"
ng-click="FreightGroup_delete(7338bb3a-9e6b-49d7-be08-7b60ff47ba61,
ce3adfcc-d8a1-4a6e-a2b7-d15dc1980384)" id="deleteFreight">
Delete Freight Group </button>
2 ответа:
Не смешивайте jquery с angularjs. Это должен быть правильный подход, если я правильно понимаю, чего вы пытаетесь достичь.
JS:
$scope.item = item;
HTML:
<button class="btn btn-danger" ng-click="FreightGroup_delete(item.ListGuid, item.CustomerGuid)" ng-disabled="item.CustomerGuid !== item.OwnerCustomerGuid" id="deleteFreight">Delete Freight Group </button>
Использование функций jquery не влияет на область видимости. Пожалуйста, проверьте с помощью кода ниже
if (item.CustomerGuid == item.OwnerCustomerGuid) { $scope.isDeleteDisabled = false; $scope.dynamicAttr= [ { attr: 'ng-click', value: "FreightGroup_delete(" + item.ListGuid + ", " + item.CustomerGuid + ")" } ]; } else { $scope.isDeleteDisabled = true; }
И ваш HTML выглядит так
<button class="btn btn-danger" ng-disabled="isDeleteDisabled" id="deleteFreight" dyn-attrs="dynamicAttr">Delete Freight Group </button>
Дайте мне знать, если это работает.