不幸的是,您的应用程序停止工

时间:2013-03-26 18:58:19

标签: view titanium appcelerator titanium-alloy

在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 ...

欢迎任何帮助!

1 个答案:

答案 0 :(得分:3)

您正在传递一个模型对象,而是尝试传递一个像这样的JSON对象:

for(var i=0; i<questions.length; i++){
    $.scrollableBilan.add(Alloy.createController('question', questions.at(i).toJSON()));
}

或者你可以使用Data BindingdataCollection属性在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模型中的属性。