1

在 Alloy 框架中,我想动态添加一个在 xml 文件中定义但不绑定到任何其他视图的视图。

让我们看下面的例子:

容器我要填写index.xml:

<ScrollableView id="scrollableBilan" showPagingControl="true">
</ScrollableView>

我想为进入 ScrollableView 的每个视图实例化视图模板 question.xml:

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

欢迎任何帮助!

4

1 回答 1

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模型中的属性。

于 2013-03-26T20:02:05.240 回答