Titanium 钛合金:我想在一个窗口中添加和删除行,它将在第二个窗口中自动更新

Titanium 钛合金:我想在一个窗口中添加和删除行,它将在第二个窗口中自动更新,titanium,titanium-alloy,appcelerator-alloy,appcelerator-studio,Titanium,Titanium Alloy,Appcelerator Alloy,Appcelerator Studio,我有两个xml文件..index.xml和win2.xml,两个窗口都有tableview,行中的内容相同,我的意思是: index.xml <Alloy> <Window backgroundColor="red" > <ScrollView id="scrollview" > <TableView id="table" > <TableViewRow title="Capsicum" onClic

我有两个xml文件..
index.xml
win2.xml
,两个窗口都有tableview,行中的内容相同,我的意思是:

index.xml

<Alloy>
<Window backgroundColor="red" >
    <ScrollView id="scrollview"  >
        <TableView id="table" >
        <TableViewRow title="Capsicum" onClick="select"></TableViewRow>
        <TableViewRow title="Beans" onClick="select" ></TableViewRow>
        <TableViewRow title="Spinach" onClick="select"></TableViewRow>
        <TableViewRow title="Pizza" onClick="select"></TableViewRow>
        <TableViewRow title="Burger" onClick="select"></TableViewRow>
    </TableView>
    </View>
    </ScrollView>
    </Window>
win2.xml

<Alloy>
    <Window backgroundColor="red"  id="win2">
        <TableView id="tableView" >
            <TableViewRow title="Capsicum" onClick="select"></TableViewRow>
            <TableViewRow title="Beans" onClick="select" ></TableViewRow>
            <TableViewRow title="Spinach" onClick="select"></TableViewRow>
            <TableViewRow title="Pizza" onClick="select"></TableViewRow>
            <TableViewRow title="Burger" onClick="select"></TableViewRow>
        </TableView>
        <TextField id="textfield"  returnKeyType="Ti.UI.RETURNKEY_DONE" onReturn="addRow" class="insertField" hintText="Add ingredients"></TextField>
        <Button id="removeButton" onClick="removeRow"></Button>
    </Window>
</Alloy>

我们可以在两个窗口中创建一个单一的tableview和access吗?

就像是说可以使用数据绑定,或者如果数据绑定太多,可以通过文件或属性共享数据

您需要从数据中创建一个JSON对象,并解析该数据以创建表。一旦更改了表中的数据,就可以将所有更改应用于JSON对象。当您打开窗口时,您将使用该数据创建表

初始数据:

var myData = [{"name":"Item name 1", "checked": true,..}, {"name":"Item name 2", "checked": false,..}, ...]; 
Ti.App.Properties.setObject("myData", myData);
现在,在其他两个控制器中:

var myData = Ti.App.Properties.getObject("myData", []); // this will receiv myData or {}
现在myData拥有了所有元素,您可以使用该数组创建表

将行0更改为选中时,更改
myData[0]。checked=true/false。最后,再次执行
Ti.App.Properties.setObject(“myData”,myData)
来存储数据

如果您有很多数据,或者即使用户清除了应用程序缓存/存储,您也希望保留这些数据,您可以将
myData
保存到一个文件中,然后重新读取,而不是
getObject

未来: 使用数据绑定/模型将帮助您摆脱所有这些手动更新。当您更改数据时,所有连接的元素都将更新,就像说您可以使用数据绑定,或者如果数据绑定太多,您可以通过文件或属性共享数据

您需要从数据中创建一个JSON对象,并解析该数据以创建表。一旦更改了表中的数据,就可以将所有更改应用于JSON对象。当您打开窗口时,您将使用该数据创建表

初始数据:

var myData = [{"name":"Item name 1", "checked": true,..}, {"name":"Item name 2", "checked": false,..}, ...]; 
Ti.App.Properties.setObject("myData", myData);
现在,在其他两个控制器中:

var myData = Ti.App.Properties.getObject("myData", []); // this will receiv myData or {}
现在myData拥有了所有元素,您可以使用该数组创建表

当您更改要检查的第0行时,您更改了myData[0]
checked=true/false。最后,再次执行
Ti.App.Properties.setObject(“myData”,myData)
来存储数据

如果您有很多数据,或者即使用户清除了应用程序缓存/存储,您也希望保留这些数据,您可以将
myData
保存到一个文件中,然后重新读取,而不是
getObject

未来: 使用数据绑定/模型将帮助您摆脱所有这些手动更新。更改数据时,所有连接的元素都将更新

使用数据绑定。使用数据绑定。