Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/eiel/ng_todo


https://github.com/eiel/ng_todo

Last synced: about 1 month ago
JSON representation

Awesome Lists containing this project

README

        

# AngulaJSハンズオン

## ディレクトリを作成します

```
ng_todo
∟ index.html
```

## index.html の準備

- HTML の記述
- [Angular公式HP](https://angularjs.org/)からAngular の読み込み(CDN)

`http://ajax.googleapis.com/ajax/libs/angularjs/1.5.3/angular.min.js`

```


Todoアプリ

```

## ローカルサーバを起動しよう(macの方はPython,windowsの方はRuby)

Python
```
ng_todo 直下で...

python -m SimpleHTTPServer
```

Ruby
```
ng_todo 直下で...

ruby -run -e httpd -- -p 8000

もしくは、
ruby -run -e httpd ./ -p 8000
```

ブラウザでlocalhost:8000にアクセスして確認

## AngularJSを動かしてみよう

- {{ 1+1 }} を入力してみよう
→ 2が表示されれば正常にAngularJSが動いている。

## Controllerを作成しよう。
- angular.moduleを作成します。

```

angular.module("myApp", [])

```

- 作成したmoduleをng-appに設定します。

```

```

- コントローラーを作成します。

```

angular.module("myApp", [])
.controller("appController", function() {
var vm = this;
});

```

- controller as ** を指定する(Angular1.2から推奨されている方法)

```

```

- 以上でcontrollerは作成されたので、処理を追加

```

angular.module("myApp", [])
.controller("appController", function() {
var vm = this;

vm.clickButton = function() {
alert('正常に動作');
}
});

```

- 追加した処理をボタンを押すことで発火させるようにします。

```


起動ボタン

```

- 正常にアラートが起動すれば成功!!

![スクリーンショット 2016-04-15 11.47.12.png](https://qiita-image-store.s3.amazonaws.com/0/108073/c6ca4115-b4c0-0fd2-675e-f5d4edabccfd.png "スクリーンショット 2016-04-15 11.47.12.png")

## ng-repeatを使用して配列を繰り返し表示しよう

- 表示する配列を作成します。

```

angular.module('myApp', [])
.controller('appController', function() {
var vm = this;

vm.fruits = [
"りんご",
"梨",
"ぶどう",
"柿",
"いちご",
"メロン",
"パイナップル"
];
});

```

- ng-repeatを作成。

```



  • {{fruit}}



```

- この画面が表示されれば成功

![スクリーンショット 2016-04-15 12.02.05.png](https://qiita-image-store.s3.amazonaws.com/0/108073/7fd6f464-f82b-ded0-07e5-ef2afd7f5891.png "スクリーンショット 2016-04-15 12.02.05.png")

## Todo項目を作成しよう

- Todo項目を格納する空の配列を用意します

```

angular.module('myApp', [])
.controller('appController', function() {

var vm = this;

vm.todos = [];

vm.todoTitle = '';
});

```

- 入力フォームと作成用ボタンします。

```




TODOを作成


```

- ボタンクリック時に発火させたい処理を実装します。

```

angular.module('myApp', [])
.controller('appController', function() {

var vm = this;

vm.todos = [];
vm.todoTitle = ''

/*
* TODO項目の作成処理
*/
vm.todoCreate = function() {
var item = {
title: vm.todoTitle
};
vm.todos.push(item);

}
});

```

- 入力フォームにng-modelを記述し、ボタンにng-clickを記述。
- ng-repeatを使用してTODO配列を表示させます。

```




TODOを作成

  • {{todo.title}}




```

- 入力したデータが表示されれば成功

![スクリーンショット 2016-04-15 15.03.32.png](https://qiita-image-store.s3.amazonaws.com/0/108073/3f583c4e-18ed-5b6d-4a6d-421bf228ae8f.png "スクリーンショット 2016-04-15 15.03.32.png")

## 完了したTODO項目に打ち消し線をつけよう
- 配列に追加するデータにtrue/false項目を追加

```

angular.module('myApp', [])
.controller('appController', function() {

var vm = this;

vm.todos = [];
vm.todoTitle = '';

/*
* TODO項目の作成処理
*/
vm.todoCreate = function() {
vm.todoItem = {
title: vm.todoTitle,
done: false
};
vm.todos.push(vm.todoItem);

};
});

```

- 完了チェックを行うチェックボックスを作成

```




TODOを作成



  • {{todo.title}}




```

- TODO項目にng-classを実装

```




TODOを作成



  • {{todo.title}}




```

- class="done"にスタイルを追加

```

.done {
text-decoration: line-through;
color: red;
}

```

- チェックをするとTODO項目に取り消し線が入力されれば成功

![スクリーンショット 2016-04-15 16.16.59.png](https://qiita-image-store.s3.amazonaws.com/0/108073/143930ce-4c1c-371e-f783-7627f5acf099.png "スクリーンショット 2016-04-15 16.16.59.png")

## 完了したTODO項目を削除しよう

- 削除処理を作成
- angular.forEachを使用。[参考サイト](http://angularjsninja.com/blog/2013/12/06/angular-foreach/)

```

angular.module('myApp', [])
.controller('appController', function() {

var vm = this;

vm.todos = [];
vm.todoTitle = '';

/*
* TODO項目の作成処理
*/
vm.todoCreate = function() {
var item = {
title: vm.todoTitle,
done: false
};
vm.todos.push(item);

vm.todoTitle = '';
};

/*
* 削除処理
*/
vm.todoDelete = function() {
var newTodos = [];
angular.forEach(vm.todos, function(item) {
if (!item.done) {
newTodos.push(item);
}
vm.todos = newTodos;
});
}
});

```
- 削除ボタンを作成し、ng-clickを実装

```




TODOを作成
完了したTODOを削除




  • {{todo.title}}




```

## Angular2への準備!1.5からの新機能Component化を実装!

- html用別ファイルを作成。

```
ng_Todo
∟ - index.html
- todo.html
```

- todo.htmlの内容

```




TODOを作成
完了したTODOを削除




  • {{todo.title}}




```

- index.htmlの内容をComponent化用に変更する

```

angular.module('myApp', [])
.component('todo', {
controllerAs: 'vm',
controller: function() {
var vm = this;

vm.todos = [];
vm.todoTitle = '';

/**
* TODO項目の作成処理
*/
vm.todoCreate = function() {
var item = {
title: vm.todoTitle,
done: false
};
vm.todos.push(item);

vm.todoTitle = '';
};

/**
* 削除処理
*/
vm.todoDelete = function() {
var newTodos = [];
angular.forEach(vm.todos, function(item){
if (!item.done) {
newTodos.push(item);
}
})
vm.todos = newTodos;
}
},
templateUrl: 'todo.html'
});

```

- todoタグが使用できるようになったので、index.htmlに追加。
- Component化前と同じ画面が表示されれば、成功!

```

```