2011-11-14 82 views
2

好吧,所以我正在開發一個移動應用程序,我想確保我的結構是正確的,所以我可以繼續添加更復雜的東西。鈦手機控制器故障

Basicaly我問這是否是最好的方法來做到這一點。

這是我的控制器:

app.controller.newItem = function(object) { 
var item = app.view.newItem(); 

item.cancel.addEventListener("click", function(){ 
    item.win.close(); 
}); 

item.save.addEventListener('click', function(e) { 
    if (String(name.value).length > 0){ 
     var lastInsert = app.model.addItem({ 
      title: item.name.value, 
      todo: item.todo.value, 
      section: 1, 
      placement: 1, 
      matrix_id: object.id 
      }); 
     Ti.App.fireEvent('item_updated', { title: item.name.value, todo: item.todo.value, id: lastInsert, section: '1' }); 
     item.close(); 
    } 

}); 

}

那麼這是我的看法:

app.view.newItem = function() { 
// create new item window 
var win = Titanium.UI.createWindow({ 
    title:'Add a New Item', 
    backgroundColor:'stripped', 
    navBarHidden: false 
}); 
    // navbar buttons 
var cancel = Titanium.UI.createButton({title:'Cancel'}); 
var save = Titanium.UI.createButton({title:'Save', style:Titanium.UI.iPhone.SystemButton.SAVE,}); 

// labels and text areas 
var name_label = app.ui.label({ 
    text: "Item Name:", 
    top: 35, 
    left: 30 
}); 
var name = app.ui.textArea({ 
    height: name_label.height, 
    top: name_label.top + 35 
}); 
var todo_label = app.ui.label({ 
    text: "Todo:", 
    top: name.top + 40, 
    left: name_label.left 
}); 
var todo = app.ui.textArea({ 
    height: 70, 
    top: todo_label.top +35 
}); 

//set items 
var setItems = function() { 
    win.setLeftNavButton(cancel); 
    win.setRightNavButton(save); 
    win.add(name); 
    win.add(name_label); 
    win.add(todo); 
    win.add(todo_label); 
    win.open({modal: true, animation: true}); 
}(); 

return { 
    win: win, 
    cancel: cancel, 
    save: save 
} 

}

我應該將我的事件監聽器在我的控制?我真的不想使用 item = app.view.newItem();然後item.save.addEventListener().. sintax我不能只叫他們save.addEventListener而不是在item前面。我不能因此而使save成爲一個全局變量吧?

+0

什麼是您的控制器和模型(和項目)的定義?我不確定我是否理解你的代碼。 – mkind

+0

以及我不確定我的控制器應該做什麼。我將我的事件監聽器添加到我的控制器中......我沒有發佈我的模型。我基本上有處理我的數據庫連接的函數。我的觀點有我的所有對象來顯示。和控制器......我知道它應該做什麼,但我不知道該怎麼做。我基本上只是調用繪圖函數...並添加偶處理程序... –

回答

0

當我創建按鈕時,我通常會將事件監聽器放在按鈕上。尤其是當他們正在執行的功能與視圖上的信息有關時。

app.view.newItem = function() { 
    // create new item window 
    var win = Titanium.UI.createWindow({ 
     title:'Add a New Item', 
     backgroundColor:'stripped', 
     navBarHidden: false 
    }); 

    // navbar buttons 
    var cancel = Titanium.UI.createButton({title:'Cancel'}); 

    cancel.addEventListener('click', function(e) { 
     win.close(); 
    }); 

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

    save.addEventListener('click', function(e) { 
     if (String(name.value).length > 0){ 
      var lastInsert = app.model.addItem({ 
       title: item.name.value, 
       todo: item.todo.value, 
       section: 1, 
       placement: 1, 
       matrix_id: object.id 
       }); 
      Ti.App.fireEvent('item_updated', { title: item.name.value, todo: item.todo.value, id: lastInsert, section: '1' }); 
      win.close(); 
     } 
    }); 

    // labels and text areas 
    var name_label = app.ui.label({ 
     text: "Item Name:", 
     top: 35, 
     left: 30 
    }); 

    var name = app.ui.textArea({ 
     height: name_label.height, 
     top: name_label.top + 35 
    }); 

    var todo_label = app.ui.label({ 
     text: "Todo:", 
     top: name.top + 40, 
     left: name_label.left 
    }); 

    var todo = app.ui.textArea({ 
     height: 70, 
     top: todo_label.top +35 
    }); 

    //set items 
    var setItems = function() { 
     win.setLeftNavButton(cancel); 
     win.setRightNavButton(save); 
     win.add(name); 
     win.add(name_label); 
     win.add(todo); 
     win.add(todo_label); 
     win.open({modal: true, animation: true}); 
    }(); 

    return { 
     win: win, 
     cancel: cancel, 
     save: save 
    } 
}