Мой код:
HTML
<section ng-controller="randController as rand">
Skriv inn minimumtall:<br>
<input ng-model="rand.minimum" type="number" placeholder="Minste tall"><br>
<div class="tiny"></div>
Skriv inn makstall:<br>
<input ng-model="rand.maksimum" type="number" placeholder="Største tall"><br><br>
<ul class="nav nav-pills" ng-controller="clickController as click">
<li ng-click="click.randClick()" ng-class="{'active' : click.randCheck(true)}" >
<a ng-click="rand.tilfeldig()">Randomize!</a>
</li>
</ul>
<div class="tiny"></div><br>
<pre>Tilfeldig tall = {{rand.tilfeldig()}}</pre>
</section>
JS
.controller('clickController', function ($timeout) {
this.randClicked = false;
this.randClick = function () {
this.randClicked = true;
$timeout(function() {
this.randClicked = false;
}, 1000, true);
};
this.randCheck = function (x) {
return this.randClicked === x;
};
})
То, что я пытаюсь сделать, - сбросить активный класс <li>
-element примерно через 2 секунды (Unclick it после того, как он был нажат в течение 2 секунд). Я получил советы от участников форума, но он все еще не работает. В настоящее время я получаю эту ошибку, которую я не понимаю.
В this
коде есть проблема с this
указателем. Попробуй это:
.controller('clickController', function ($timeout) {
var that = this;
this.randClicked = false;
this.randClick = function () {
this.randClicked = true;
$timeout(function() {
that.randClicked = false;
}, 1000, true);
};
this.randCheck = function (x) {
return this.randClicked === x;
};
})
that
равно this
, почему это проблема использовать this
?
Для этого вы можете использовать функцию тайм-аута $.
Сначала вы должны ввести его в свой контроллер следующим образом:
.controller('clickController', function ($timeout) {
Тогда вы можете использовать его так
this.randClick = function () {
this.randClicked = true;
$timeout(function() {
this.randClicked = false;
}, 2000)
};
Где 2000 - это сумма, которую вы хотите подождать до выполнения кода внутри, в миллисекундах