我正在開發一個AngularJS的Web應用,我剛開始學習一段時間。我發現它非常有用,但經過幾天的工作後,我發現應用遲早會弄糟,因爲我在一個控制器中編寫了所有'後端'代碼。 該應用程序使用大量的$ http請求來獲取/發佈/刪除/從/向遠程服務器發送數據,以及以各種方式操作頁面所需的許多範圍變量。AngularJS:充分利用AngularJS的特性/結構
我查了很多教程/信息網站上AngularJS(similar question,great blog post例如),但我現在還不能確定如何實現我的應用程序中的一個我自己的。我想知道使用自己的服務/模塊/指令/工廠的情況通常如何?我希望稍微調整一下我的代碼,這樣一切都會變得更有條理;目前我認爲我沒有充分利用AngularJS將我的所有代碼放在一個地方,除了我的主應用程序模塊和控制器以及內置的$ http之外,沒有使用任何服務/模塊。
所以,你可以更好地理解我的問題,到目前爲止,我只用兩個JavaScript文件,第一個是app.js:
var app = angular.module('MyAppName',[]);
,第二個是controller.js(我當然可以只使用1個文件本):
app.controller("MyController", function($scope, $http){
// all my functions/variables in here
// I initialize them with $scope.someName = … if they are needed within this controller view.
// If they are not needed within view I initialize them (functions for instance)
// as functionName = function(){};
}
一切正常,因爲它應該這樣,但我認爲這種做法是不使用AngularJS的所有功能。例如:我不使用路由,我可能應該?(URL始終保持相同)。我也不使用angularJS的任何其他高級功能,例如定製服務/指令/模塊。
所以我問:我如何重構我的代碼,以便它使用更多的AngularJS功能,並保持可讀性?你什麼時候通常創建自己的服務/模塊/工廠? 我有點沒有把握AngularJS網站上的所有東西,可能是因爲我沒有足夠的知識開始發展得太早,現在我很難得到它(太過於雙向綁定,並立即開始編碼)。
任何有關這個問題的幫助表示讚賞。
編輯: OK,我知道我應該清楚一些事情:我的主要問題是得不到外界的文件夾/文件結構,但代碼結構本身。現在我有一個控制器,其中包含每個變量(30+)以及用於我的Web應用程序的功能,例如登錄功能,註銷功能,顯示/隱藏頁面部分的功能,向服務器添加/刪除數據的功能等... 我想能夠以某種方式將這些函數/變量作爲一些獨立部分來構造,但我不知道如何。
EDIT2: 我想通了如何使用服務的實例,但不幸的是,你不能叫裏面的觀點,比如與服務功能直接NG點擊......你只能調用$範圍變量這是合乎邏輯的實際。 ..不幸的是,我仍然不知道如何組織我的代碼,看起來更具可讀性和結構性
你能創建一個小提琴或plunker好嗎?即使它不工作,只是爲了我們看看你在做什麼和你在哪裏做你的東西來指導你。 – glepretre
這只是一個醜陋的嘗試,看看我的代碼是什麼樣的(不能複製所有的代碼,已經太多了)。嘗試着重於一個問題:函數和變量都在一個控制器中傳播,這是一個混亂.. http://jsfiddle.net/JTUTn/1/ – trainoasis
也許你可以開始清理你的主範圍:我創建了一個$ scope .show對象包裝你所有的$ scope.showFoo變量,你可以嘗試使用工廠將$ scope.login作爲服務進行外部化。更新小提琴:http://jsfiddle.net/JTUTn/2/ – glepretre