2015-05-07 3 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; 
}) 

Это нуждается в чистке, но я понял, что мне нужно использовать нг-модель в моей форме. Я объявил форму, которая может быть повторно использована и хранится внутри функции. Я создаю новые экземпляры каждый раз, когда я нажимаю submit. Мне нужно учиться больше, но это начало.

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

}); 
Смежные вопросы