2016-05-16 15 views
1

コントローラに工場出荷時の変数を設定する必要があります。この変数は、工場で保存関数を返すためのURLに使用されます。私は実際にいくつかの部分としてこのURLを構築するが、これは単純化されたバージョンです。コントローラの工場変数をanglejsに設定する

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

日付のparamを取り、あなたの工場内の関数を作成して、あなたのコントローラ – Clint

答えて

4

をあなたには関数を作成する必要がありますあなたの工場はとしてClintとコメントしています。

お使いのコントローラで
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

で関数を呼び出す私はthis- SaveDate.queryを追加するので、このエラーを取得していません機能。これに関するアイデア? – flurp

+0

これは 'SaveData.resource'です。 –

+0

これをSaveDate.resourceとして呼び出してもエラーはスローされませんが、データの保存にも失敗します。 – flurp

関連する問題