2015-05-07 36 views
0

我無法弄清楚如何在工廠中創建新實例。我在最初的工廠創建了一個構造函數如何在工廠中創建新實例

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()); 

}); 
+0

'DrinkList.newItem()'不返回任何東西。可能會建議你更好地處理'ng-model'如何自動爲你創建對象屬性,然後才能帶着你的方向走上 – charlietfl

+0

你還應該閱讀這個。人們說,工廠/服務基本上是一樣的,但他們正在努力做的事情確實很重要。我會閱讀它。 http://tylermcginnis.com/angularjs-factory-vs-service-vs-provider/ – ribsies

回答

0

我一直在努力工作,以更好地掌握工廠和控制器。

在我廠我已經創建了一個實例

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(); 

}); 
相關問題