如何动态地将文本字段值添加到数组?

时间:2014-02-21 12:08:17

标签: javascript android iphone titanium appcelerator

我有两个类似产品和数量的领域。在字段中输入值后,必须将其存储在相应的多维数组中。这可以多次发生,因为每当输入新值时,它必须与现有值一起添加并在表格视图中表示。

1 个答案:

答案 0 :(得分:0)

键入Apple或Orange,然后键入数字。单击“添加”,它将更新表视图。如果你没有输入数量,我不确定会发生什么,因为我没有测试它。

要添加新产品(如Banana),请键入不存在的产品。它会将它添加到阵列中,然后累计在此之后添加的任何其他产品。

此示例始终与产品名称一致。

由于这是Titanium代码并且只使用基本对象,因此它应该适用于Android和IOS,但我只测试了IOS。

var win = Ti.UI.createWindow({
    layout: 'vertical',
    backgroundColor: "white"
});

var products = [{
        productName: "Apple",
        quantity: 5 
    },
    {
        productName: "Orange",
        quantity: 10
    }];

var view = Ti.UI.createView({
    top: 0,
    layout: "horizontal",
    height: Ti.UI.SIZE
});

var productView = Ti.UI.createView({
    width: "50%",
    height: Ti.UI.SIZE,
    layout: "vertical"
});
view.add(productView);

var productName = Ti.UI.createLabel({
    text: "Product Name:"
});
productView.add(productName);

var product = Ti.UI.createTextField({
    width: "90%",
    borderStyle: Ti.UI.INPUT_BORDERSTYLE_ROUNDED
});
productView.add(product);

var quantityView = Ti.UI.createView({
    width: "50%",
    height: Ti.UI.SIZE,
    layout: "vertical"
});
view.add(quantityView);

var productQuantity = Ti.UI.createLabel({
    text: "Quantity: "
});
quantityView.add(productQuantity);

var quantity = Ti.UI.createTextField({
    width: "90%",
    borderStyle: Ti.UI.INPUT_BORDERSTYLE_ROUNDED
});

quantityView.add(quantity);
win.add(view);

var button = Ti.UI.createButton({
    title: "Add",
    height: Ti.UI.SIZE,
    width: Ti.UI.SIZE
});
win.add(button);

function createRow(params){
    var row = Ti.UI.createTableViewRow({
        height: "50dp",
        layout: "horizontal"
    });
    var product = Ti.UI.createLabel({
        text: params.productName
    });
    row.add(product);
    var quantity = Ti.UI.createLabel({
        left: "20dp",
        text: params.quantity
    });
    row.add(quantity);
    return row;
}

button.addEventListener('click', function(e){
    var index = -1;
    for(var i = 0; i < products.length; i++){
        if(products[i].productName === product.value){
            index = i;
        }
    }
    if(index > -1){
        products[index].quantity = parseFloat(products[index].quantity) + parseFloat(quantity.value);
        rows[index] = createRow(products[index]);

    } else {
        var newProduct = {
            productName: product.value,
            quantity: quantity.value
        };
        products.push(newProduct);
        rows.push(createRow(newProduct));
    }
    table.setData(rows);
});

var rows = [];

var table = Ti.UI.createTableView({
    top: "10dp"
});
win.add(table);

for(var i = 0; i < products.length; i++){
    rows.push(createRow(products[i]));
}

table.setData(rows);
win.open();