Javascript 不了解Angular JS中的控制器
这是一个我不习惯问的问题,但我觉得这是理解我在挣扎的唯一途径。如下所示,有两个函数Javascript 不了解Angular JS中的控制器,javascript,angularjs,controller,firebase,plunker,Javascript,Angularjs,Controller,Firebase,Plunker,这是一个我不习惯问的问题,但我觉得这是理解我在挣扎的唯一途径。如下所示,有两个函数app.controller()和app.factory(),对我来说,这两个函数似乎是相等的,即使我删除了其中一个部分,该函数也无法执行其预期任务 链接到plunker:(相关文件为script.js) 这两个函数有什么区别,为什么我不能只有一个呢?我知道一定有一个简单的解释 app.controller('MainCtrl', ['$scope', 'ItemsService', function ($
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);
};
}]);
vs
控制器仅在需要时实例化(使用
ng controller
或controllerAs
)。因此,每次切换到不同的路由或页面时,Angular都会实例化一个控制器(它可以是已清理的同一个控制器,例如,如果刷新页面)
Angular providers是一种在应用程序生命周期内保存数据的方法,甚至用于在不同控制器之间传递数据。Angular providers主要有几种类型,其中Factory就是其中之一。您的问题的范围更像是:提供者与控制器,而不是工厂(一种类型)与控制器
在上面的示例中,您有一个控制器,如果有多个控制器呢?如何将数据或实用程序函数传递给多个控制器,而无需反复编写相同的代码?与供应商为一
以下是一些不错的链接供您查看:
虽然这两个看起来很相似,但实际上并不相似,您是否尝试过阅读这些文档?你必须有一个控制器,你不需要工厂。。。更多链接:另一个:服务是单例的,控制器不是。这是一个开始。使用你最喜欢的一个(在本例中)
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
}
}]);