Titanium Mobileでアプリを作っています。
アプリを作っていくと、設定画面を作らなきゃという場面に多くぶちあたります。
複数のwindowをまたがって設定画面を作る際に、設定された値をどうviewに集約させるか。
例えば、
設定メイン画面(設定一覧が閲覧できる)
設定A画面 -> 設定B画面 -> 設定C画面
とwindowを深く掘っていったときに、設定メイン画面に、設定C画面で設定した値をどう取得するか。
設定C画面でイベントを発火して、設定メイン画面でイベントを受け取る
のもいいと思いますが、ちょっとわかりづらい。
個人にはオブサーバーパターンを使っています。
設定モデルオブジェクトを作っておいて、モデルオブジェクトの値が変わったら設定メイン画面に通知する感じです。
Model.addObserver = function(window){
this.observer_list.push(window);
}
Model.notify = function(){
for(var i=0; i this.observer_list[i].update(this);
}
Model.setConfig = function(value){
this.config = value;
this.notify();
}
window.update = function(model){
var value = model.getConfig();
// 処理
}
こんな感じ。
アプリを作っていくと、設定画面を作らなきゃという場面に多くぶちあたります。
複数のwindowをまたがって設定画面を作る際に、設定された値をどうviewに集約させるか。
例えば、
設定メイン画面(設定一覧が閲覧できる)
設定A画面 -> 設定B画面 -> 設定C画面
とwindowを深く掘っていったときに、設定メイン画面に、設定C画面で設定した値をどう取得するか。
設定C画面でイベントを発火して、設定メイン画面でイベントを受け取る
のもいいと思いますが、ちょっとわかりづらい。
個人にはオブサーバーパターンを使っています。
設定モデルオブジェクトを作っておいて、モデルオブジェクトの値が変わったら設定メイン画面に通知する感じです。
Model.addObserver = function(window){
this.observer_list.push(window);
}
Model.notify = function(){
for(var i=0; i
}
Model.setConfig = function(value){
this.config = value;
this.notify();
}
window.update = function(model){
var value = model.getConfig();
// 処理
}
こんな感じ。