2015-07-10 100 views
0

我是Angular的新手,並試圖通過我的API從表單中創建一個新的Droplet。我可以讓它正確提交我的表單數據,但我需要爲用戶標識添加一個隱藏字段。我認爲最好的方法是在將它發送到我的工廠以作爲POST請求發送之前將其添加到控制器中。我的控制器看起來是這樣的:將數據添加到控制器中的角度形式

$scope.createNewDroplet = function() { 
    drop.create($scope.drop).success(function(droplet) { 
    $scope.createdDroplet = droplet; 
    }); 
}; 

,工廠看起來是這樣的:

app.factory('drop', ['$http', function($http) { 
    return { 
    create: function (drop) { 
     return $http.post('/droplets/', drop) 
    } 
    } 
}]); 

我必須通過$ scope.user.id訪問的用戶ID。我將如何去添加「user_id:$ scope.user.id」到請求?

+0

爲什麼你需要一個隱藏的領域?如果要將數據發佈回服務器,只需創建一個新的對象以發佈到角度函數中。 – Will

+0

是的,但我該怎麼做?那就是問題所在。我是新來的角,我不知道如何將user_id(或任何其他額外的信息)添加到表單中的數據發送到服務器。 – Finnjon

+0

我想角方式不會爲它創建一個隱藏的字段,這可能會有助於像rails和django這樣的框架在請求時將隱藏的字段值作爲參數選取。 –

回答

0

嘗試......

$http.post('/droplets/', {drop: drop, userId: $scope.user.id}) 

編輯

在回答你關於不能夠在出廠訪問範圍評論...

變化控制器的數據之前,調用你的工廠代碼。

$scope.createNewDroplet = function() { 
    $scope.drop.user_id = $scope.user.id; 
    drop.create($scope.drop).success(function(droplet) { 
    $scope.createdDroplet = droplet; 
    }); 
}; 
+0

不幸的是,你不能訪問工廠內的$ scope。我需要做的是將user_id:$ scope.user.id添加到控制器中的表單數據。任何想法如何做到這一點? – Finnjon

+0

@Finnjon - 編輯回答在調用工廠之前將userid添加到控制器中的json。 – Will

+0

我現在工作了。您使用的代碼位於正確的位置,但最簡單的方法是將user_id添加到已有表單中已有幾個字段的現有drop。 $ scope.drop.user_id = $ scope.user.id – Finnjon

相關問題