Javascript 如何在工厂中创建新实例
我不知道如何在工厂中创建新实例。我在最初的工厂中创建了一个构造函数Javascript 如何在工厂中创建新实例,javascript,angularjs,oop,angularjs-factory,Javascript,Angularjs,Oop,Angularjs Factory,我不知道如何在工厂中创建新实例。我在最初的工厂中创建了一个构造函数 app.factory('Tea',function(){ var Tea = function(name,description,price,caffeine, size ) { this.name = name; this.description = description; this.price = price; this.caffeine = caffeine; this.siz
app.factory('Tea',function(){
var Tea = function(name,description,price,caffeine, size ) {
this.name = name;
this.description = description;
this.price = price;
this.caffeine = caffeine;
this.size = size;
}
Tea.prototype.toString = function(){
var returnString='' ;
returnString += "name" + this.name + "\n" +
"description: " + this.description + "\n" +
"price: " + this.price + "\n" + "caffeine: " + this.caffeine + "\n" + "size: " + this.size;
return returnString
}
return Tea;
})
在我的下一个工厂,我确保注入茶,这样我就能够创建新的实例。我创建了一个对象来存储数组,并创建了一个方法来推送新实例
app.factory("DrinkList",function(Tea){
var beverageList = {
drinkLibrary: []
};
beverageList.newItem = function(){
beverageList.drinkLibrary.push(new Tea);
}
console.log(beverageList);
return beverageList;
})
在我的控制器中,我确保引用我创建的两个工厂。但是,drinkList.newItem未定义
app.controller('myController', function($scope,Tea,DrinkList ) {
$scope.drinkList = DrinkList.newItem();
console.log(DrinkList.newItem());
});
我一直在努力工作,以便更好地掌握工厂和控制器 在我的工厂中,我创建了一个实例
app.factory('Drink',function($http) {
var Drink = function(name,description,caffeineLevel) {
this.name = name;
this.description = description;
this.caffeineLevel = caffeineLevel;
}
return Drink;
})
这需要一些清理,但我意识到我需要在表单中使用ng模型。我声明了一个可以重用的表单,并将其存储在函数中。每次单击“提交”时,我都在创建新实例。我还需要学习更多,但这只是一个开始
app.controller('myController', function($scope,Drink,$http ) {
var init = function() {
$scope.defaultForm = {
beverageName: "",
description: "",
caffeine: ""
};
}
init();
// $scope.defaultForm = defaultForm;
$scope.allDrinkList = [];
$scope.drinkList= function(obj) {
var newdrink = new
Drink(obj.beverageName,obj.description,obj.caffeine);
$scope.allDrinkList.push(newdrink);
console.log($scope.allDrinkList);
init();
});
DrinkList.newItem()
不返回任何内容。可能建议您更好地掌握ng model
如何自动为您构建对象属性,以免过于迷恋所处的方向。您也应该阅读此文章。人们说工厂/服务基本上是一样的,它们是一样的,但是你想做什么,这确实很重要。我会仔细阅读的。