-
Notifications
You must be signed in to change notification settings - Fork 207
装配ViewModel
xuwhale6 edited this page Aug 26, 2020
·
17 revisions
我们提供自动装配和手动装配来简化ViewModel数据源的赋值。
一般情况下,我们ViewModel
的数据源来自网络请求,因此提供自动装配,可将网络请求返回的json串自动解析作为ViewModel
的默认数据。
用法:
编写demo.ag
代码时,我们通常在preview
中初始化数据源。打包之后将preview
的数据源作为ViewModel
的默认数据,即为手动装配。
用法:打包之后生成的ViewModel
提供defaultUserData
方法将preview
的数据源作为ViewModel
的默认数据。
- iOS手动装配
在ViewController.m中添加如下代码:
#import <MLNUIKit.h>
#import "ViewController.h"
#import "MovieData.h"
@interface ViewController ()
@property() MovieData *model;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// 1. 创建一个MLNUIViewController示例
MLNUIViewController *viewController = [[MLNUIViewController alloc] initWithEntryFileName:@"chat_demo/VChatMovieList.lua" bundleName:@"MLNUIDemoTestMUI"];
//手动装配:ViewModel调用`defaultUserData`方法将`preview`的数据源作为`ViewModel`的默认数据。
self.model = [MovieData defaultUserData];
[viewController bindData:self.model forKey:@"MovieData"];
// 3.添加到指定的控制器上.
[viewController mlnui_addToSuperViewController:self frame:self.view.bounds];
}
- Android手动装配
在Activity、Fragment或任意view中显示LuaView及Databingding使用
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//声明对象
argo = new Argo(this);
//是否打开debug按钮
argo.showDebugButton(true);
//加载lua文件
argo.loadAssetsUI("VChatMovieList.lua");
//ViewModel绑定,提供defaultUserData方法,将argo源文件中的preview数据作为初始数据,即手动装配
MovieDataViewModel viewModel = MovieDataViewModel.defaultUserData();
argo.bind(viewModel);
}
@Override
protected void onPause() {
super.onPause();
argo.onPause();
}
@Override
protected void onResume() {
super.onResume();
argo.onResume();
}
@Override
protected void onDestroy() {
super.onDestroy();
argo.onDestroy();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (argo.onActivityResult(requestCode, resultCode, data))
return;
super.onActivityResult(requestCode, resultCode, data);
}