我在下拉組件中填充數據時遇到問題。當我使用虛擬JSON數據(如評論中)執行此操作時,則所有工作都正常。下拉組件填充數據,只有虛擬數據工作
GET請求服務拉取必要的數據,然後我將它的響應分配給適當的變量。 獲取服務並下拉組件被放置在另一個View組件中。
在控制檯中沒有錯誤信息...我在這裏錯過了什麼?
GET請求的服務:
(function() {
"use strict";
angular.module('app').factory('GetService', function ($http) {
return{
get: function (uri, config) {
$http.get(uri, config).
then(function(response) {
return response.data;
});
}
}
});
}());
接受JSON數據下拉組件。
(function() {
"use strict";
var module = angular.module("app");
module.component("dropDown", {
template:
<div class="input-group">
<span class="input-group-addon">{{vm.placeholder}}</span>
<select class="form-control"
ng-model="vm.selectedItem"
ng-options="option.name for option in vm.items"></select>
</div>,
controllerAs: "vm",
bindings: {
placeholder: '@',
itemlist: '='
},
controller: function() {
var vm = this;
vm.items = vm.itemlist;
vm.selectedItem = vm.itemlist[0];
}
});
})();
View組件:
(function() {
"use strict";
var module = angular.module('app');
function controller(GetService) {
var vm = this;
vm.$onInit = function() {
vm.doprdown1url = "/Controller/Action1";
vm.doprdown2url = "/Controller/Action2";
vm.dd1List = [];
vm.dd2List = [];
GetService.get(vm.doprdown1url, null).then(function (data) {
vm.dd1List = JSON.parse(data.data);
});
GetService.get(vm.doprdown2url, null).then(function (data) {
vm.dd2List = JSON.parse(data.data);
});
//vm.dd1List = [{
// id: 0,
// name: 'Arm'
//}, {
// id: 1,
// name: 'Leg'
//}, {
// id: 2,
// name: 'Hand'
//}];
//vm.dd2List = [{
// id: 0,
// name: 'Eye'
//}, {
// id: 1,
// name: 'Nose'
//}, {
// id: 2,
// name: 'Ear'
//}];
}
}
module.component("view1", {
template:
<p>
<drop-down placeholder="Title" itemlist="vm.dd1List"></drop-down>
<drop-down placeholder="Title2" itemlist="vm.dd2List"></drop-down>
</p>,
controllerAs: "vm",
controller: ["$http", controller]
});
}());
你打電話從子組件的服務從你的工廠方法中返回'response.data',但是你在控制器中使用'JSON.parse(data.data)'。我想你想用'JSON.parse(data)'來代替。 – Lex