我尝试构建一个简单的类似表单的UI,我想动态地添加多个textfield的行。我用XML和JS构建了一个自定义组件,因为在这些TextFields(开始、结束、持续时间)中有一些交互。
我是一个初学者在NativeScript,但我得到了我的数据绑定和事件结构。我能够通过ui/builder添加我的自定义组件。我完全卡住的地方是获得"选项/参数"到这个组件实例。我想要完成的是:添加我的自定义组件,并给它一些应该填充到组件observable中的数据。在稍后的(保存)操作中,我希望能够从我的"主"视图中检索这些数据。
结构是这样的:
main.js
exports.loaded = function(args) {
var page = args.object;
page.bindingContext = model;
var outerContainer = page.getViewById('outerContainer');
var vma = builder.load({
path: 'widgets/durationRow',
name: 'durationRow'
});
outerContainer.addChild(vma);
};
自定义组件"durationRow.js"
var componentModel = new Observable({
label: "",
start: "",
end: "",
duration: ""
});
exports.onLoad = function(args){
var container = args.object;
container.bindContext = componentModel;
};
我试图通过exports.componentModel和地址vma.componentModel从main导出组件模型。但是vma是一个视图,而不是"js模块"。我真的被困住了,没有找到任何类似我的场景的例子。
谁能给我指出正确的方向,我怎么才能做这件事正确(或任何)的方式?
谢谢!
所以这个问题的答案很简单:阅读文档:)
有一个选项attributes
可以精确地用于此。最后是这样的:
var row = builder.load({
path: 'widgets/durationRow',
name: 'durationRow',
attributes: {
bindingContext: bindingModel
}
});
container.addChild( row );
在加载的小部件中,我将获得我的"插入"模型为bindingContext:
exports.onLoad = function(args){
page = args.object;
var model = page.bindingContext;
};
我希望这对你有帮助!