我是Ionic框架的新手,并试图贯穿Ionic ToDo app demonstration。在开始之前,我想提一下我从其GitHub页面手动安装了最新的离子版本,并在我的index.html
中加入了以下内容:ionic.bundle.js
,angular.min.js
,angular-animate.min.js
,{{1 },angular-resource.min.js
,angular-sanitize.min.js
。在第5章中,作者详细介绍了用于创建新任务的控制器代码。我尝试在定义为
angular-ui-router.min.js
方法中添加一些额外的功能
.createTask()
将其更改为
$scope.createTask = function(task) {
$scope.tasks.push({
title: task.title
});
$scope.taskModal.hide();
task.title = "";
};
现在,如果您使用教程中概述的附带视图运行此新代码,您将看到即使$scope.createTask = function(task) {
if (task.title == "") {
window.alert("Empty Task!");
$scope.taskModal.hide();
} else {
$scope.tasks.push({title: task.title})
$scope.taskModal.hide();
task.title = "" ;
};
};
失败,控制器也会调用空任务警报!也许我错过了一些非常明显的东西,但我不确定。此外,我写这篇文章的主要原因是,如果您只是在task.title == ""
子句中注释掉行task.title = "";
并通过实时视图添加任务,它会添加两个创建任务的实例!这是奇怪的,或者我认为,因为好像else
被执行了两次。就像任何优秀的程序员一样,我试图让编译器(在这种情况下是解释器)泄露其秘密。我在控制器范围$scope.tasks.push({title: task.title});
中声明了一个变量,以跟踪发生的情况。将$scope.i = 0
留在原位,我插入了
//task.title = ""
就在它之前。运行此代码时,您会注意到两件事:
所以,我不确定发生了什么。也许这只是我忽略的一些粗心错误,但对此的任何帮助都将非常感激。非常感谢!
修改
我尝试进一步尝试,似乎整个事情都取决于$scope.i += 1;
window.alert($scope.i);
。即使
window.alert()
替换为
$scope.i += 1;
window.alert($scope.i);
“解决方案”仍然有效。虽然如果您使用$window.alert("1");
或window.alert()
,原始问题仍然存在。