#ionic官方Todo Guide
代码在
https://github.com/gongbaodd/myExperinments/tree/ionic_todo 一直想写一个app,但是懒得设计,看到ionic官方有个guide而且没有中文版,所以写一个。
-
在head中添加对应的css和js
-
body添加controller
-
Todo的界面,分别是左边栏(负责分配todo的类型——projects)和主界面(负责分配每一个todo项——tasks)
… … -
Todo的行为 angular.module(‘todo’,[‘ionic’]) .factory(‘Projects’,function() { … }) .controller(‘TodoCtrl’,function(timeout,ionicSideMenuDelegate) { … })
-
左边栏结构
Projects
{{project.title}} -
左边栏行为 .factory(‘Projects’,function() { return { all:function(){ var projectString = window.localStorage[‘projects’]; if(projectString){ return angular.fromJson(projectString); } return []; }, save:function(projects){ window.localStorage[‘projects’] = angular.toJson(projects); }, newProject:function(projectTitle){ return { title:projectTitle, tasks:[] }; }, getLastActiveIndex:function(){ return parseInt(window.localStorage[‘lastActiveProject’])||0; }, setLastActiveIndex:function(index){ window.localStorage[‘lastActiveProject’] = index; } } })
-
主界面结构
Todo
{{task.title}} -
主界面行为 .controller(‘TodoCtrl’,function(timeout,ionicSideMenuDelegate) {
var createProject = function(projectTitle){ var newProject = Projects.newProject(projectTitle); $scope.projects.push(newProject); Projects.save($scope.projects); $scope.selectProject(newProject,$scope.projects.length-1); } $scope.projects = Projects.all(); $scope.activeProject = $scope.projects[Projects.getLastActiveIndex()]; $scope.newProject = function() { var projectTitle = prompt("Project name"); if(projectTitle){ createProject(projectTitle); } }; $scope.selectProject = function(project,index){ $scope.activeProject = project; Projects.setLastActiveIndex(index); $ionicSideMenuDelegate.toggleLeft(false); }; $ionicModal.fromTemplateUrl('new-task.html',function(modal) { $scope.taskModal = modal; },{ scope:$scope, animation:'slide-in-up' }); $scope.createTask = function(task) { if(!$scope.activeProject||!task){ return ; } $scope.activeProject.tasks.push({ title:task.title }); $scope.taskModal.hide(); Projects.save($scope.projects); task.title = ""; }; $scope.newTask = function() { $scope.taskModal.show(); }; $scope.closeNewTask = function() { $scope.taskModal.hide(); }; $scope.toggleProjects = function() { $ioncSideMenuDelegate.toggleLeft(); }; $timeout(function() { if($scope.projects.length == 0){ while(true){ var projectTitle = prompt('Your first project title'); if(projectTitle){ createProject(projectTitle); break; } } } }) });
-
新建项目的模态对话框