我有一个网站,我使用AngularJS元素,例如md-input-container
和md-datepicker
。
我(在老师的帮助下)写了一个如下所示的javascript程序,它让我知道用户是否在输入中键入了正确的信息,并选择了正确的日期。
angular.module('BlankApp', ['ngMaterial'])
.controller
('AppCtrl', function() {
var ctrl = this;
this.aller = "";
this.retour = "";
this.date;
this.checkValue = function() {
if((this.aller.toLowerCase()=="montpellier" && this.retour.toLowerCase()=="marseille")
&& (this.date != null && this.date.toString() == "Fri Jun 10 2016 00:00:00 GMT+0200")) {
document.location.href="recherche.html";
}
else
{
alert("Veuillez saisir Montpellier et Marseille, et le 10 juin 2016");
}
}
});
如果条件为真,当用户点击按钮时,它会将他带到“recherche.html”页面。但是,即使条件得到遵守,它仍会显示警报。
答案 0 :(得分:0)
这一行:
var ctrl = this;
很重要。它会保存this
的值以供以后使用。有时候this
可能会引用 else 而不是控制器。
那一刻是你在另一个函数中使用this
的时候。在该功能中,使用ctrl
代替this
,你应该好好去。
这是一个完整的演示:
angular.module('BlankApp', [])
.controller('AppCtrl', function() {
var ctrl = this;
ctrl.aller = "montpellier";
ctrl.retour = "marseille";
ctrl.date = "Fri Jun 10 2016 00:00:00 GMT+0200";
ctrl.checkValue = function() {
if (ctrl.aller.toLowerCase() === "montpellier"
&& ctrl.retour.toLowerCase() === "marseille"
&& !!ctrl.date
&& ctrl.date.toString() === "Fri Jun 10 2016 00:00:00 GMT+0200") {
alert('Will do: document.location.href = "recherche.html";');
} else {
alert("Veuillez saisir Montpellier et Marseille, et le 10 juin 2016");
}
}
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular.js"></script>
<div ng-app="BlankApp">
<div ng-controller="AppCtrl as ctrl">
Aller: <input ng-model="ctrl.aller"><br>
Retour: <input ng-model="ctrl.retour"><br>
Date: <input ng-model="ctrl.date"><br>
<button ng-click="ctrl.checkValue()">checkValue</button>
</div>
</div>
&#13;
关于我也调整过的事情的几点说明:
date
的要求。无论如何,在Javascript中比较Date
或任何Date
内容非常非常棘手,如果你必须做很多事情,我建议你研究一下。无论如何,我已经将代码简化为date
作为字符串,因为你的问题不是关于那部分,但我怀疑它会给你带来麻烦; if
条款中有很多括号使其难以阅读; ===
而不是==
; !!ctrl.date
检查虚假值,而不是!==
(或更糟:!=
)与null
的比较; ctrl = this
成语时,我建议不再使用this
,即使它是安全的(例如在三个普通属性上),但在那里使用ctrl.
代替正如我所展示的那样。为了使可运行的演示更清晰,我在视图模型值上设置了一些默认值,并将重定向替换为alert
。