这就是我所拥有的:
$http.get("http://localhost/app/api/Suppliers").success(function(response) {
$scope.dataSource = response;
console.log($scope.dataSource);
$scope.safeApply(function() {
$scope.settings.columns[3] = $scope.dataSource;
});
});
$scope.settings = {
colHeaders: ["Code", "Comments"],
contextMenu : ["row_above","row_below","remove_row"],
colWidths: [100, 100],
columns : [
{ type: 'dropdown',
source: ['Not Started', 'In Progress', 'Completed']
},
{},
{},
{ type: 'dropdown',
source: $scope.dataSource,
}
]
};
问题是$scope.dataSource
未定义,它没有显示数据。应该解决这个问题的方法是什么?
更新: 这会在$ http调用中显示数据。但是在我调用source的设置源代码中: $ scope.dataSource 未定义
答案 0 :(得分:0)
首先,您需要注意,当您声明$scope.settings = {...}
时,$http
来电还没有结束,所以不要写
{
type: 'dropdown',
source: $scope.dataSource,
}
你也可以简单地写一下
{
type: 'dropdown',
source: null,
}
然后当$http
调用结束时,我假设您要设置此source
属性。但是,在您的代码中,您将覆盖整个$scope.settings.columns[3]
而不是仅覆盖其source
属性。
请改为尝试:
$http.get("http://localhost/app/api/Suppliers").success(function(response) {
$scope.dataSource = response;
console.log($scope.dataSource);
$scope.settings.columns[3].source = $scope.dataSource;
});
请注意,我删除了safeApply
这是一种反模式。这里$http
调用将处理摘要周期。
答案 1 :(得分:0)
找到了答案!
$scope.suppliers = [];
$http.get("http://localhost/i95/api/Suppliers").success(function(data, status, headers, config) {
for(var i = 0; i < data.length; i++) {
$scope.suppliers.push(data[i].company);
}
console.log($scope.suppliers);
});
因此,创建一个全局变量并添加push方法可以解决问题。