钛的逻辑和UI分离(javascript)

时间:2010-09-09 10:10:33

标签: javascript user-interface business-logic titanium

我是appcelerators钛和javascript的新手,我对编写iPhone应用程序很感兴趣。我认识到需要“很多”代码来创建UI。到目前为止这没问题,但我倾向于明智地将该代码与我的应用程序逻辑分开。什么是最佳实践?

[更新] tweetanium是如何构建钛移动应用程序的一个很好的例子

2 个答案:

答案 0 :(得分:4)

好吧,我刚刚找到了一个很酷的做法。

我将带有应用程序逻辑的con_file.js包含在带有

的view_file.js中
Titanium.include('../controller/con_file.js');

现在我可以访问孔数据结构了。

答案 1 :(得分:4)

我会试一试:

我倾向于使用mvc-pattern开发我的应用程序,因为在一个单独的js文件中实现所有内容非常难看。所以我决定使用一个文件作为视图,所有的东西都是看待感觉,一个文件用于数据库处理(控制器),特别是sql语句,一个文件用于abstract data type(该模型)。

一个简短的例子:

view: viewConcerningObject.js

Ti.include('object.js');

var win = Ti.UI.currentWindow;
var myObject = new object();

var myObjectName = Ti.UI.createLabel({
   text:myObject.getName();
});

win.add(myObjectName);

model: object.js

Ti.include('controllerConceringObject.js');

function object(){
   this.name = 'myInitialName';

   this.getName(){
      return this.name;
   };

   this.setName(newName){
      this.name = newName;
   };

   this.updateNameFromDb(){
      this.name = getNameFromDatabase();
   };

}

controller: controllerConcerningObject.js

function getNameFromDataBase(){
   var db = Ti.Database('objects');
   var sql = 'SELECT name FROM objects';
   var recordset = db.execute(sql);
   var name  = recordset.field(0);
   recordset.close();
   db.close();
   return name;
};

所以文件夹结构可能是这样的:

myProject:folderView(viewConcerningObject.js),folderModel(theDatabase.db,object.js),folderController(controllerConcerningObject.js)。