2010-09-09 4 views
6

Я новичок в appcelerators titanium и javascript, и я заинтересован в кодировании приложения iphone. я признал, что существует потребность в «много» кодах для создания пользовательского интерфейса. это пока не проблема, но я склонен отделить этот код от моей логики приложения с умом. Каковы наилучшие методы?Разделение логики и пользовательского интерфейса в титане (javascript)

[обновление]tweetanium является прекрасным примером того, как структурировать титановый мобильное приложение

ответ

4

нормально, я только что нашел прохладную практику.

я включить con_file.js с логикой приложения в view_file.js с

Titanium.include('../controller/con_file.js'); 

теперь я в состоянии получить доступ к структуре данных дырки.

+2

Вы также можете попробовать commonJS: https://wiki.appcelerator.org/display/guides/Mobile+Best+Practices – Julian

4

я буду попробовать:

я предпочитаю использовать mvc-pattern для разработки моего приложения, так как внедрение всех вещей в одном JS-файле весьма некрасиво. поэтому я решил использовать один файл для представления и все материалы, содержащие представление о стиле, один файл для обработки базы данных (контроллер), особенно sql-statements и один файл для abstract data type (модель).

короткий пример:

вид: 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); 

модели: 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(); 
    }; 

} 

контроллер: 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).

Смежные вопросы