不理解Angular JS中的控制器
Do not understand the controllers in Angular JS
这是我不习惯问的问题,但我觉得这是理解我正在挣扎的问题的唯一方法。如下所示,有两个函数app.controller()
和app.factory()
,对我来说,它们似乎是相等的,即使我删除了一个部分,该函数也不会执行其预期任务。
链接到plunker:点击这里(相关文件是script.js)
这两个函数有什么区别,为什么我不能只使用其中一个呢?我知道一定有一个简单的解释。
app.controller('MainCtrl', ['$scope', 'ItemsService', function ($scope, ItemsService) {
$scope.newItem = { PlateNumber: '', Description: '', Price: 0 };
$scope.currentItem = null;
$scope.items = ItemsService.getItems();
$scope.addItem = function () {
ItemsService.addItem(angular.copy($scope.newItem));
$scope.newItem = { PlateNumber: '', Description: '', Price: 0 };
};
$scope.updateItem = function (id) {
ItemsService.updateItem(id);
};
$scope.removeItem = function (id) {
ItemsService.removeItem(id);
};
}]);
与
app.factory('ItemsService', ['$firebase', 'FIREBASE_URI', function ($firebase, FIREBASE_URI) {
var ref = new Firebase(FIREBASE_URI);
var items = $firebase(ref);
var getItems = function () {
return items;
};
var addItem = function (item) {
items.$add(item);
};
var updateItem = function (id) {
items.$save(id);
};
var removeItem = function (id) {
items.$remove(id);
};
return {
getItems: getItems,
addItem: addItem,
updateItem: updateItem,
removeItem: removeItem
}
}]);
控制器仅在需要时实例化(使用ng-controller
或controllerAs
)。因此,每次您切换到不同的路由或页面时,Angular都会实例化一个控制器(例如,如果您刷新页面,它可以是已清理的同一个控制器)
Angular提供程序主要有几种——Factory就是其中之一,它是在应用程序的整个生命周期内保留数据的一种方式,甚至用于在不同的控制器之间传递数据。你的问题范围更像是:提供者与控制器,而不是工厂(这是一种类型)与控制器。
在上面的例子中,你有一个控制器,如果你有很多呢?如何在不反复编写相同代码的情况下将数据或实用程序函数传递给多个控制器?与供应商为一!
这里有一些好的链接供您查看:
Angular Provider文档
Tyler McGinnis的博客文章解释了上述进一步的
JSFiddle与工厂与服务的示例
相关文章:
- 通过连线将数据从js发送到控制器
- 如何根据条件加载Anguar.js控制器
- Angular.js延迟控制器初始化
- 为什么我的控制器没有启动函数.js脚本
- Angular JS控制器初始化错误
- Ember.js:将Em.$.getJSON转换为promise并将响应绑定到控制器上下文的正确方法
- Angular JS“;控制器为“;语法不起作用
- 如何将Ember.js控制器连接到视图
- 如何从页面中的jquery调用angular js函数控制器
- 将Browserify与Angular JS结合使用--将服务传递到控制器中
- Ember.js-自动使动作成为目标控制器
- 如何使用javascript express node将变量从控制器中的一个方法公开.js到另一个控制器.js
- 如何在 Ember 中循环排序的数组控制器.js
- 有没有办法在帆上扩展控制器.js
- 如何在用户使用护照登录的情况下测试帆.js控制器.js
- 如何从angular中的控制器js隐藏ng控制器之外的元素
- 我如何重构我的控制器.js,所以我有每个控制器在一个单独的文件
- 我如何调用一个函数定义在控制器.js从一个模态弹出
- AngularJS:如何知道表单中的输入文本在控制器JS文件中是否需要
- 在 Ember 中创建没有路由的子控制器.js