LoginSignup
2
1

More than 5 years have passed since last update.

AlloyのModel,使ってみる.

Last updated at Posted at 2014-09-01

-
ソースコードはこちら
今回は主に公式ドキュメントを参考にしました.

背景的な

そろそろTitanium初心者を抜け出したいと思ったのでAlloyフレームワークのModelを使ってみようかなと.

今回やったこと

  • ModelのデータをTableViewにバインドした
  • レコードを追加する際に,validateを行った

※見た目は普通にTableViewを使ったのと変わらないので載せません

ちょっと説明

app/controller/index.js
function transFormFunction(model){
  var transform = model.toJSON();
  return transform;
}

var library = Alloy.Collections.user;
library.fetch();

この2つはとても重要.TableViewに何も表示されないのであれば,おそらくこのどちらかの処理が欠けている.

app/model/user.js
extendModel: function(Model) {
    _.extend(Model.prototype, {
      validate: function(attrs){
        for(var key in attrs){
          var value = attrs[key];
          switch(key){
            case 'name':
              if(value.length <= 0 || 20 < value.length){
                return 'Error: No title';
              }
              break;
            case 'age':
              if(isNaN(value)){
                return 'Error: No age';
              }
              break;
            case 'email':
              if(!(/^[A-Za-z0-9]+[\w-]+@[\w\.-]+\.\w{2,}$/.test(value))){
                return 'Error: No email';
              }
              break;
          }
        }
      }
    });

    return Model;
  }

controller側でisValid()メソッドを呼び出すとvalidateが呼び出される.isValid()は一番下のreturn Model以外のreturnを受け取った場合,falseと判定されるっぽい.(要検証)

理解した点・苦労した点

  • まず日本語の記事が少ない
  • dataTransformこれ重要
  • Alloy.Collections.model.fetch()これも重要
  • そして日本語の記事が少ない

最後に

今までTi.App.Propertiesにデータを格納してきたが,これからは勉強がてら積極的にmodelを使っていこうかなと.
また機会があったらmodelの記事を書きたいと思います.

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1