我想弄清楚如何從一個新頁面開始一些結構。我試圖用'The Crockford Way'來構建我的JS,但我有一些顧慮
頁被稱爲「訂單」,這將有一對夫婦在它的標籤現在:「OrdersTab」和「TasksTab」
我有我的佈局設置,如下所示:
//Namespace for the 'Orders' page.
var Orders = (function() {
"use strict";
var tabs = $('#OrdersTabs').tabs();
var ordersTab = new OrdersTab();
var tasksTab = new TasksTab();
//Public methods:
return {
};
})(); //Load when ready.
我的意圖是讓訂單名稱空間負責加載選項卡。我正在努力理解如何讓OrdersTab和TasksTab與Orders保持一致的'名稱空間'。理想情況下,另一個頁面將無法實例化OrdersTab。
//Namespace for the 'OrdersTab' from the 'Orders' page.
function OrdersTab() {
"use strict";
var ordersGrid = $('#OrdersGrid');
var ordersGridPager = $('#OrdersGridPager');
ordersGrid.jqGrid({
url: '../Orders/GetOrders/',
datatype: 'json',
colNames: ['Name', 'Description'],
colModel: [
{ name: 'Name', index: 'Name', sortable: false, width: 150 },
{ name: 'Description', index: 'Description', sortable: false, width: 300 }
],
gridview: true,
height: 'auto',
rowNum: 10,
pager: ordersGridPager,
viewrecords: true
});
//Public methods:
return {
};
};
訂單位於Orders.js和OrdersTab位於OrdersTab.js。在我看來,一個新的OrdersTab可能會「意外」由其他人創建,或者該函數名稱意外模糊。是否有可能將OrdersTab包裹在訂單的'名稱空間'中,同時也將其保存在單獨的文件中?我認爲單獨的文件是必要的,以防每個選項卡變得比預期的更大/允許將來引入額外的選項卡。
此外,我想知道是否有可能在兩個文件之間使用相同的安裝結構。對我來說,我分配給Orders的變量似乎很尷尬,但只需使用OrdersTab創建一個函數。也許這是確定和標準的,但我只想知道。
你不能在不允許實例化頁面上包含OrdersTab.js嗎?從性能角度來看,無論如何你都會想要這樣做,而且它似乎可以解決你的問題。 – lbstr
是的,我意識到,當我寫下這個問題時,我想我會留下來看看我是否可以學習其他任何我不正確的事情。 –