我正在使用$ resource.query从后端获取数据。它正在发挥作用。但在得到回复后,视图不会改变。当它不在函数内时它会起作用。
这是我的服务
app.factory('myService', function ($q, $resource, $http) {
var service = {};
service .pesquisar = function (param1, param2) {
return $q(function (resolve, reject) {
$resource(urlWebService + '/API/', null).query({
param1: param1,
param2: param2
}, function (dados) {
resolve(dados);
}, function (erro) {
reject(erro);
});
});
};
return service ;
});
这是我的控制器
app.controller('myController', ['$scope', '$resource', 'myService',
function ($scope, $resource, myService) {
//this call update the view
myService.fetchData('1234', '111111')
.then(function (data) {
$scope.data = data
})
.catch(function (erro) {
console.log(erro);
});
//this is called in a button click and doesn't change the view
$scope.getData = function () {
myService.fetchData('1234', '111111')
.then(function (data) {
$scope.data = data
})
.catch(function (erro) {
console.log(erro);
});
}
}]);
这是我的观点
<table>
<thead>
<tr>
<th>Field</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="d in data">
<td>{{d.field}}</td>
</tr>
</tbody>
</table>
答案 0 :(得分:1)
假设调用getData
(),您将结果附加到未定义的变量teste
,而不是$scope
$scope.getData = function () {
myService.fetchData('1234', '111111')
.then(function (data) {
//teste.data = data
$scope.data = data; //will bind the result to the view
})
.catch(function (erro) {
console.log(erro);
});
}
}]);
答案 1 :(得分:1)
承诺的结果存储在结果变量的“数据”中,因此请将视图更改为
<tr ng-repeat="d in data.data">
或您的控制器
$scope.data = data.data;
答案 2 :(得分:0)
你的第二个非工作版本等于$scope.getData
到一个不返回任何内容的函数。