Я пытаюсь заставить тег привязки вызывать функцию, если установлена конкретная переменная. В приведенном ниже примере name
установлен на "Shnick"
, поэтому при нажатии на ссылку должен запускаться метод func()
. Однако ничего не происходит, когда я нажимаю на ссылку.
Если name
не установлен, то я не хочу, чтобы атрибут click
появлялся, и поэтому метод func()
не будет выполняться.
Я пытался посмотреть на эти два ответа на добавление условных атрибутов в Angular:
Но ни один из них не сработал. Вот мои попытки использовать два ответа, представленные выше
Попытка # 1:
angular.module('myApp', [])
.controller('myController', function ($scope) {
$scope.name = "Shnick";
$scope.func = function() {
alert("Link Clicked!");
};
});
angular.element(document).ready(function () {
angular.bootstrap(document, ['myApp']);
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<div ng-controller="myController">
<p>Name: {{ name }} </p>
<a href="#" [attr.click]="name ? func() : null">Click me</a>
</div>
Попытка № 2:
angular.module('myApp', [])
.controller('myController', function ($scope) {
$scope.name = "Shnick";
$scope.func = function() {
alert("Link Clicked!");
};
});
angular.element(document).ready(function () {
angular.bootstrap(document, ['myApp']);
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<div ng-controller="myController">
<p>Name: {{ name }} </p>
<a href="#" ng-attr-click="name ? func() : undefined">Click me</a>
</div>
Итак, как я могу условно добавить атрибут click
таким образом, чтобы он добавлялся только тогда, когда установлен name
, и будет выполнять метод func()
при нажатии?