AlloyのModelにはじめの一歩を踏み込んだのでメモ。generateから基本まで

  • Pocket
  • このエントリーをはてなブックマークに追加
  • 163 follow us in feedly

まえがき

AlloyのフレームワークでTitaniumアプリを作り始めてやっと真面目にModelを触るようになりました。

いままでローカルストレージとか使った開発しなかったもんで( ^ω^)・・・

参考にしたのは公式のサンプルアプリの「todo」

todo

todo

 

Backbone.jsの書き方もできるみたいですが、エラー出たので素直にAlloyの方で頑張ってみました。

しかしやはりBackboneを勉強してからだったので理解しやすかっったです!

 

開発環境

・Titanium 3.1.0

・Alloy  1.1.2

・ビルド対象  iOS

 

頭の体操

・1レコードを管理するのがModel

・Modelを集めたのがCollection

やっぱこれ大事。

 

やってみたこと

・alloy generate コマンドからモデル生成。

・レコード保存

・レコード取得

・レコード更新

・レコード削除

The Kihon!!

 

コマンドからモデルを作成する

>  alloy generate model user sql name:string age:number

こんな感じで。

作りたいモデル名の後に ‘sql’ っていれるっぽい。

このへんはRailsとかで慣れているのでこんなもので。

※ 以降のサンプルソースはこの userモデルを使う。

 

モデルのソース

コマンドを実行するとmodels/ フォルダにモデルだ出来上り!

exports.definition = {
	config: {
		columns: {
		    "name": "string",
		    "age": "number"
		},
		adapter: {
			type: "sql",
			collection_name: "user"
		}
	},		
	extendModel: function(Model) {		
		_.extend(Model.prototype, {
			// extended functions and properties go here
		});
		
		return Model;
	},
	extendCollection: function(Collection) {		
		_.extend(Collection.prototype, {
			// extended functions and properties go here
		});
		
		return Collection;
	}
}

今回利用する文にはModelファイルは一切触らない!

 

レコードの保存

// レコードの保存
var user1 = Alloy.createModel("user", {
	name: "Ichiro",
	age:  21
});
user1.save();

var user2 = Alloy.createModel("user");
user2.set({
	name: "Jiro",
	age:  19
});
user2.save();

バリデーションのチェックなどもできるみたいですね〜

 

レコードの取得

・とりあえず全件取得

// レコードの取得
var users = Alloy.createCollection('user');
// 引数なしで全件取得
Ti.API.info("/////// fetch() ////////");
users.fetch();
users.map(function(user){
	// レコードの値を取得。
	Ti.API.info(user.id);	// IDは自動で付与されるみたい。
	Ti.API.info(user.get('name'));
	Ti.API.info(user.get('age'));

	// JSONに変換も簡単。
	Ti.API.info(user.toJSON());
});

・SQL書いて抽出条件指定して取得

var users = Alloy.createCollection('user');
// 抽出条件をSQLで書ける。
Ti.API.info("/////// fetch({query: 'SQL'}) ////////");
users.fetch({
	query: 'SELECT * FROM user WHERE age > 20'
});
users.map(function(user){
	// レコードの値を取得。
	Ti.API.info(user.id);	// IDは自動で付与されるみたい。
	Ti.API.info(user.get('name'));
	Ti.API.info(user.get('age'));

	// JSONに変換も簡単。
	Ti.API.info(user.toJSON());
});

・特定のレコード取得(idがわかっている必要がある。)

// IDがわかっていたらこんなとり方も
u = users.get(user.id);
Ti.API.info(u.get('name')+" from id");

 

レコードの更新

var users = Alloy.createCollection('user');
// レコード編集
Ti.API.info("/////// edit ////////");
users.fetch({
	query: 'SELECT * FROM user WHERE age > 20'
});
users.map(function(user){
	user.set({
		age: 30
	});
	user.save();
});
users.map(function(user){
	Ti.API.info(user.id);
	Ti.API.info(user.get('name'));
	Ti.API.info(user.get('age'));
});

 

レコードの削除

user.destroy();

 

あとがき

Modelに関する資料はネットで探しまくったけどあまり探すことができませんでした。

不明な点が多すぎる・・・

 

 

関連記事

Screeny-Shot-2013-08-11-21.40.56.pngScreeny-Shot-2013-08-11-21.40.56.png

AlloyでFacebookアプリっぽいスライドメニューを実装してみる

まえがき AlloyでFacebookとかでよく使われている左からビュ...

記事を読む

no image

Titaniumでクリップボードにコピー&クリップボードから取り出しをやってみる

クリップボードにコピー [code]Ti.UI.Clipboard.s...

記事を読む

Screeny Shot 2013-06-11 3.43.31.png

Alloyで書籍検索アプリを作ってみた

    まえがき 先日、Alloyで開発環境を作りましたが、 ...

記事を読む

Screeny Shot 2013-07-29 3.08.50.png

TitaniumMobileでSafariで開くを実装する

  まえがき TitaniumMobileでiOSやAndroidのデ...

記事を読む

no image

Titanium CLI × Alloy × CoffeeScript × Jade で作るiPhoneアプリのお話

まえがき slideshareにて初のスライドを投下してみたのでご報告...

記事を読む

新着記事

no image

PHPでRubyのirbっぽいインタラクティブなスクリプトが実行できる「boris」

まえがき PHPでもRubyのirbみたいなことがしたくて探してみたと...

記事を読む

2015年の抱負と去年の振り返り〜よちよちWEB業界1年経験して〜

まえがき あけましておめでとうございます。今年もどうぞよろしくお願いし...

記事を読む

Java SE 7 Bronze試験(1Z0-802)を受けてきました

まえがき 以前から少し受けてみたかった試験『Java SE 7 Bro...

記事を読む

HubotでJenkinsのジョブを実行する

まえがき HubotをつかってJenkinsのジョブをじっこうしてみた...

記事を読む

no image

Hubotをforeverでデーモン化する

まえがき 今回はHubotをforeverを使ってデーモン化してみた時...

記事を読む

スポンサーリンク

  • Sorry. No data so far.

PAGE TOP ↑