1

好的,所以我是 Titanium 的新手,而且我几乎是 Javascript 的菜鸟

我试过这样做:

app.view.newMatrix = function() {
return {
    matrix = Titanium.UI.createWindow({  
        title:'Add a New Matrix',
        backgroundColor:'stripped',
        navBarHidden: false
    }),     
    // navbar buttons
    cancel = Titanium.UI.createButton({
        title:'Cancel'
    }),
    save = Titanium.UI.createButton({
        title:'Save',
        style:Titanium.UI.iPhone.SystemButton.SAVE
    }),
    name_label = Titanium.UI.createLabel({
        text: "Matrix Name:",
        font: { fontsize: 12, fontstyle: 'italic', color: '#336699' },
        height: 35,
        top: 35,
        left: 30,
        width: 150,
        color: "black"
    }),
    name = Titanium.UI.createTextArea({
        color: '#336699',
        height: this.name_label.height,
        top: this.name_label.top + 35,
        left: this.name_label.left - 10,
        width: 275,
        borderRadius:15
    }),
    setItems = function() {
        this.win.add(this.name);
        this.win.add(this.name_label);
        this.win.add(this.desc);
        this.win.add(this.desc_label);
        Ti.API.info("label:"+ this.name_label.height);
        return this.win.open({modal: true, animation: true});  
    }
}

}

然后这样称呼它:

app.controller.home = function() {
        var home = app.view.home();
        home.setItems();

        home.butn.addEventListener("click", function(e){
            app.controller.newMatrix();
        });

        home.butn2.addEventListener("click", function (e) {
            matrix_table(tab);
        });

        home.butn3.addEventListener("click", function(e){
            newItem();
        });

        home.butn5.addEventListener("click", function (e) {
            item_table(); 
        });

}

我这样做是因为我在这里看到了 Titanium MVC 建议,但我不明白为什么它会返回一个匿名对象。我无法name_labelname对象内部访问属性。我想我应该这样做:

app.view.newMatrix = function() {
    this.matrix = Titanium.UI.createWindow({  
        title:'Add a New Matrix',
        backgroundColor:'stripped',
        navBarHidden: false
    }), 
    // navbar buttons
    this.cancel = Titanium.UI.createButton({
        title:'Cancel'
    }),

    this.save = Titanium.UI.createButton({
        title:'Save',
        style:Titanium.UI.iPhone.SystemButton.SAVE
    }),

    this.name_label = Titanium.UI.createLabel({
        text: "Matrix Name:",
        font: { fontsize: 12, fontstyle: 'italic', color: '#336699' },
        height: 35,
        top: 35,
        left: 30,
        width: 150,
        color: "black"
    }),

    this.name = Titanium.UI.createTextArea({
        color: '#336699',
        height: this.name_label.height,
        top: this.name_label.top + 35,
        left: this.name_label.left - 10,
        width: 275,
        borderRadius:15
    }),

    this.setItems = function() {
        this.win.add(this.name);
        this.win.add(this.name_label);
        this.win.add(this.desc);
        this.win.add(this.desc_label);
        Ti.API.info("label:"+ this.name_label.height);
        return this.win.open({modal: true, animation: true});  
    }

}

并这样称呼它:

app.controller.home = function() {
return {
    getView: function() {

        var home = app.view.home();
        home.setItems();

        home.butn.addEventListener("click", function(e){
            app.controller.newMatrix();
        });

        home.butn2.addEventListener("click", function (e) {
            matrix_table(tab);
        });

        home.butn3.addEventListener("click", function(e){
            newItem();
        });

        home.butn5.addEventListener("click", function (e) {
            item_table(); 
        });
    }
}

}

但我不知道为什么第一个例子不起作用。我的意思是属性与变量不一样吗?我也知道第二个例子也是一个对象..我应该这样做吗?第二个例子也是new关键字可选的吗?我应该使用它吗?我有点想远离那个,因为我不确定什么时候应该使用它。

谢谢,我希望我说得通。我确实有它的工作,但我不知道第二个例子是否是正确的方法......

4

0 回答 0