2016-05-16 70 views
1

我需要在我的控制器中設置一個工廠變量。該變量用於在我的工廠中返回保存功能的url。我實際上建立這個網址爲幾個片斷,但這是一個簡化的版本。在angularjs中設置控制器中的工廠變量

myApp.factory('SaveDate', ['$resource', 
function saveDateFactory($resource, $http) { 
    var myData = '';  
    return $resource(myData, {}, { 
    query: { method: "POST", params: {}, isArray: false }, 
    });                    
}]);  

從我的控制器功能如下:

vm.myFunction1 = function ($resource) { 

    vm.myDate = '/test/MyProduct/SetSalesDate/988093099/108/2016/05/21'; 

    SaveDate.myData = vm.myDate; 

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

}; 

我一直在使用的對象,而不是原始的嘗試,但它也沒有工作。我已經測試過,並且我的SaveDate.myData值正在準確設置。如果我在我在工廠申報我的變量的地方硬編碼值,它將完美保存。我只是無法成功地從我的控制器傳遞變量到我的工廠。我已經嘗試了很多種方式來做到這一點,包括使用$ watch。感謝您的幫助!

當我加入這樣的功能:

myApp.factory('SaveDate', ['$resource', 
function saveDateFactory($resource, $http) { 
    var myData = {}; 
    myData.getMyUrl = function (urlStuff) { 
    alert("in SaveDate" + urlStuff); 
    return $http.get(urlStuff); 
    } 

    return $resource(myData.getMyUrl, {}, { 
    query: { method: "POST", params: {}, isArray: false } 

添加此功能引發以下錯誤:未知的提供:myDataProvider < - myData的< - UserListController

+1

讓你的工廠函數,它的Date參數和自加入這個 - SaveDate.query調用該函數在控制器 – Clint

回答

4

你需要創建一個函數您的工廠爲克林特在評論中說。

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

    function setMyData(data) { 
    myData = data; 
    } 

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

在你的控制器:

SaveDate.setMyData(vm.myDate); 
+0

我得到這個錯誤並不一個函數。對此有何想法? – flurp

+0

現在是'SaveData.resource'。 –

+0

將此稱爲SaveDate.resource不會引發錯誤,但它也無法保存數據。 – flurp

相關問題