2016-05-27 2 views
0

У меня есть функция в моей фабрике, которая выглядит следующим образом:значения перезаписи или игнорируются функции фабричных в angularjs

myApp.factory('SaveDate', ['$resource', 
function saveDateFactory($resource) { 
    var myData = ''; 

    //this grabs the data we need for the url below 
    function setMyData(data) { 
    myData = data; 
    } 

    return { 
    setMyData: setMyData, 
    resource: $resource(myData, {}, { 
     query: { method: "POST", params: {}, isArray: false } 
    }) 
    }; 
}]); 

я называю это в моем контроллере, как это:

vm.myFunction1 = function ($resource) { 

    vm.myDate = '/api/Product/SetMilestoneDate/vm.officeKey/vm.whichMilestone/vm.yearSelected/vm.monthSelected/vm.daySelected'; 

    SaveDate.setMyData(vm.myDate); 

    //this should save the date for milestones 
    SaveDate.resource.query(); 
    vm.cleanUp(); 

}; 

I я получаю правильное значение в setMyData на заводе просто отлично. В нижней части фабрики (в обратном порядке) она игнорирует это значение и переходит с любым значением, которое я использовал, когда я впервые объявил переменную. Если я объявляю переменную с жесткими значениями, которые передаются через myData, функция работает отлично (она захватывает значение, из которого я его объявил). Кто-нибудь есть идеи о том, почему он игнорирует значение myData из setMyData и просто использует значение по умолчанию? Спасибо за вашу помощь!

ответ

0

Это может помочь: Angular Factory Variables Won't Update - Instance gets old values

Примечание: Все услуги в угловых одноэлементны. Это означает, что инжектор использует каждый рецепт не более одного раза для создания объекта. Затем инжектор кэширует ссылку для всех будущих потребностей. http://docs.angularjs.org/guide/providers