我被亞當·弗里曼讀書臨AngularJS,和我有一個關於書的一個例子一個吹毛求疵的問題:應該避免在AngularJS控制器中包含常規的Javascript對象嗎?
myApp.controller("tomorrowCtrl", function($scope) {
var dayNames = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday";]
$scope.day = dayNames[(new Date().getDay() + 1) % 7];
});
我明白這是什麼控制器的總體目標是:以顯示的一天的名字通過$scope.day
觀看周。但我很困惑,爲什麼控制器使用普通的Javascript數組 - var dayNames
- 創建$scope
對象。
的AngularJS controller documentation解釋控制器用於:
建立$範圍對象的初始狀態[並]添加行爲到$範圍對象。
當然,dayNames
有助於設置$ scope對象的初始狀態。它還包含了一些應用程序的業務邏輯,所以我想它有點檢查。我擔心的是,我還沒有發現任何遵循此設計模式的其他AngularJS控制器示例;我還沒有在Angular controller文檔中找到任何東西,也沒有找到PhoneCat教程。
在這樣的AngularJS控制器中包含普通的Javascript對象是否有意義? (這是否認爲是無害的?)
如果不是,爲什麼? 不是有沒有很好的理由在控制器中包含普通的Javascript對象?另外,是否有不同的方式可以使dayNames
適合Angular模式,如指令或服務?
我想他們有沒有理由公開dayNames,所以他們沒有綁定到$ scope? – 2015-02-05 18:39:50