在Alloy框架中,我想动态添加一个在xml文件中定义但未绑定到另一个视图的视图。
我们来看下面的例子:
容器我想填写index.xml:
<ScrollableView id="scrollableBilan" showPagingControl="true">
</ScrollableView>
视图模板question.xml我想为进入ScrollableView的每个视图实例化:
<Alloy>
<Collection src="ReponsePossible">
<View id="questionContainer" class="container">
<Label id="questionText" />
<Button id="buttonNextQuestion">Question suivante</Button>
</View>
</Alloy>
最后控制器index.js,问题是Collection实例:
for(var i=0; i<questions.length; i++){
$.scrollableBilan.add(Alloy.createController('question', questions.at(i)));
}
这会使我的应用程序崩溃,并显示以下消息:'不幸的是,您的应用程序已停止'。我已经遇到了这个错误,总是在尝试使用Alloy.createController动态创建视图时添加。
使用Ti.UI.createView创建视图时行为正常,但我想使用MVC ...
欢迎任何帮助!
答案 0 :(得分:3)
您正在传递一个模型对象,而是尝试传递一个像这样的JSON对象:
for(var i=0; i<questions.length; i++){
$.scrollableBilan.add(Alloy.createController('question', questions.at(i).toJSON()));
}
或者你可以使用Data Binding和dataCollection
属性在xml文件中完成所有操作,在index.xml中输入这样的内容:
<Alloy>
<Collection src="questions">
<ScrollableView id="scrollableBilan" showPagingControl="true" dataCollection="ReponsePossible">
<View id="questionContainer" class="container">
<Label id="questionText" text="{questionText}"/>
<Button id="buttonNextQuestion">Question suivante</Button>
</View>
</ScrollableView>
</Alloy>
questionText
字段必须是questions
模型中的属性。