【发布时间】:2015-02-05 18:33:06
【问题描述】:
我正在阅读 Adam Freeman 的 Pro AngularJS,我对书中的一个例子有一个挑剔的问题:
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 解释说控制器用于:
设置 $scope 对象的初始状态 [并] 向 $scope 对象添加行为。
果然,dayNames 有助于设置 $scope 对象的初始状态。它还包含一些应用程序的业务逻辑,所以我猜它有点检查出来。我担心的是我还没有找到任何其他遵循这种设计模式的 AngularJS 控制器示例。我在 Angular 控制器文档和 PhoneCat 教程中都没有找到任何内容。
像这样在 AngularJS 控制器中包含普通的 Javascript 对象有意义吗? (这被认为是无害的吗?)
如果不是,为什么? 不 是否有充分的理由在控制器中包含普通的 Javascript 对象?此外,dayNames 是否有其他方式适合 Angular 架构,例如指令或服务?
【问题讨论】:
-
我猜他们没有理由公开 dayNames 所以他们没有将它绑定到 $scope?
标签: javascript angularjs