我是角色新手,我正在创建一个编辑页面,我通过post上的成功回调加载数据。但我的下拉值未加载,而我的文本值正常。所有收到的数据都很好,我不知道为什么下拉值没有得到设定?
$http.post('article/get-article.php',{id: id})
.success(function(response){
$scope.article = response[0];
});
//My category drop down html
<select class="form-control" name="category" ng-model="article.category" ng-options ="art.id as art.title for art in categories" required >
</select>
修改 我附上完整的控制器代码
myApp.controller('editArticle', ['$scope', '$http','$routeParams', 'editArt',function($scope,$http, $routeParams, editArt){
$scope.article = {};
$scope.statusList = [{title: 'New', id: 1, role: "Author"},{title: 'Approved', id: 2, role: "Admin"},{title: 'Rejected', id: 3, role: "Admin"}];
$scope.categories = [{title: 'Cricket',id: 1},{title: 'Football',id: 2 },{title: 'Tennis',id: 3},{title: 'Golf',id: 4,}];
var id = $routeParams.id;
article = "";
//$scope.article = editArt.getData('article/get-article.php',{id: id});
$http.post('article/get-article.php',{id: id})
.then(function(response){
$scope.article = response.data[0];
//$scope.article.category = response.data[0].category;
console.log(response.data);
});
}]);
答案 0 :(得分:0)
您的代码中有两个明显的问题可能导致问题:
您正在将response
直接分配给范围变量。 $http
调用中的响应数据已被换行,实际数据可用response.data
代替response
。因此,您应该将response
替换为response.data
$http.post('article/get-article.php',{id: id})
.then(function(response){
$scope.article = response.data[0];
});
您的类别似乎未在HTML中设置
您案件中最可能的原因似乎是#1以上
答案 1 :(得分:0)
所以编辑应该是这样的。
1)使用$ http get而不是post。将Id传递给它并获得响应。 (在每个页面上加载get调用,以便获得更新的数据)
2)你的HTML是正确的。但是我没有看到你发布任何数据。你需要使用get in edit case
发布$ scope.article对象以获取它的更新值答案 2 :(得分:0)
请参阅下面的plunker代码。
https://plnkr.co/edit/HSAJc1kcaPr2YAdZXQzy?p=preview
根据提供的html选项,只有在ng-model article.category具有id值时才会设置。
$scope.article.category = '1';
检查您的回答并正确分配ng-model
答案 3 :(得分:0)
@Deep注释检查类别是字符串还是数字是否完成了技巧
$scope.article.status = parseInt(response.data[0].status);
$scope.article.category = parseInt(response.data[0].category);
谢谢大家。