我有這個選擇我的網頁上:AngularJS選擇輸入NG-模型訪問
<select multiple id="userId" class="form-control" ng-model="ctrl.selectData.currentUser"
ng-options="user.id as user.firstName + ' ' + user.lastName for user in ctrl.users"
ng-change="ctrl.getProducts()">
</select>
,我有這個AngularJS控制器:
app.controller("MainController", ["$http", "$routeParams", function($http, $routeParams) {
var self = this;
var selectData = {
currentUser: "test"
}
self.getUsers = function() {
$http.get("users/all").then(function(response) {
self.users = response.data.items;
})
};
self.getProducts = function() {
$http.get("products/all?userId=" + self.selectData.currentUser).then(function(response) {
self.products = {"count": response.data.count, "items": response.data.items};
});
self.userChoosed = true;
alert(self.selectData.currentUser);
};
self.addProduct = function() {
alert(self.addForm.title + " CU:" + self.selectData.currentUser);
$http({
method: "POST",
url: "products/add",
data:"title=" + self.addForm.title + "&description=" + self.addForm.description + "&price=" + self.addForm.price + "&ownerId=" + self.selectData.currentUser
}).then(function successCallback(response) {
alert("success");
}, function errorCallback(response) {
alert("error" + response.data);
});
};
}]);
在控制器的addProduct命令功能我可以」得到一個selectData.currentUser。它可以在getProducts函數中正常工作(這個函數使用selectData.currentUser從數據庫中加載項目,它真的起作用,我可以看到它),但它並不在addProduct中。
它是一個表單提交功能。所以,當我點擊我的「提交」按鈕時,它什麼都不做。但是,如果我刪除「CU:」+ self.selectData.currentUser警報功能,它的工作原理和顯示我的警報(但它當然不會發送正確的發佈請求到服務器)。
我該怎麼辦?爲什麼ng-submit在alert函數裏面用selectData.currentUser調用時什麼也不做?
一個plunker將是有益的 – HebleV