【发布时间】:2015-05-07 16:54:21
【问题描述】:
我不知道如何在我的工厂中创建一个新实例。我在初始工厂创建了一个构造函数
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;
})
在我的下一个工厂中,我确保注入 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());
});
【问题讨论】:
-
DrinkList.newItem()不返回任何内容。可能会建议您更好地了解ng-model如何自动为您构建对象属性,然后再被您的方向迷住了 -
您也应该阅读此内容。人们说工厂/服务基本上是一样的,它们是一样的,但是对于你想要做的事情,它确实很重要。我会阅读它。 tylermcginnis.com/angularjs-factory-vs-service-vs-provider
标签: javascript angularjs oop angularjs-factory