我使用了我想出的 MVC 和 M V VM 的混合体:
MVC 适合用于重定向您的站点/用户并将用户作为参数的 Web URL。因此,控制器是应用程序的入口点。
在 .net 的 MVVM 模式中,视图是应用程序的入口点。 View 请求 ViewModel(将事件连接到 UI)和 ViewModel 请求到业务(模型)。最后,当到达数据时,通过事件冒泡“反映”数据。这听起来很麻烦,但实际上不是
使用相同的方法,我使用以下方法
UI > C > B > 技术 > 互联网
在控制器上我订阅事件,在技术中我触发了它们。
其中“技术”抽象了所有技术(SQLite、JSON、Ti.App.Properties 等)
业务了解实体和图标,但不了解技术方面
getIcon('Badge'){ tech.getIcon('Badge') } )
在技术上我们可以有像 var 这样的字典
getIcon(icon)
{
var Icon = {
'Badge': 'src/cfg/img/badge.png'
}
return Icon[icon]
}
所以控制器看起来像:
oTable = ui.TableEmployees() // our custom made TableView at 'ui.js'
Ti.App.addEventListener( 'EmployeesUpdated', function(e){ oTable.data = e.data } )
最后,每次我需要更新信息时,我都会去
business.refreshEntity('Employees')
企业访问技术的地方
tech = require('src/tech')
refreshEntity(entity){ tech.refreshEntity(entity) }
终于进入技术领域
refreshEntity(entity)
{
HTTPClient = new Ti.Network.HTTPClient( { onload:..., onerror:... } )
HTTPClient.send()
data = transform(response)
if (data != cachedData)
Ti.App.fireEvent( 'EmployeesUpdated', {data: data} )
}
这样您就可以拉动刷新、计时器等,并且只有当数据发生更改时,您才能将其提升到所有受影响的视图