我显示像
这样的数据<tr ng-repeat="item in getAllEngagementItems | filter:searchText">
<td>{{item.wafId}}</td>
<td>{{item.engagementProjectName}}</td>
<td>{{item.engagementLibraryStatus}}</td>
</tr>
在控制器中
app.controller("EngagementController", function ($scope, WAFDatafactory) {
$scope.getAllEngagementItems = myfunction();
function myfunction() {
var output;
var items = WAFDatafactory.getAllEngagementItems();
items.$promise.then(function (results) {
$scope.$emit('UpdateEngagementCount', results.length);
output = results;
console.log("Output detais :" + output);
}
, function (error) {
alert("Failed to Retrive data from server" + error);
console.log("Error detais :" + error);
});
return output;
}
});
的DataFactory
factory.getAllEngagementItems = function () {
var allEngagementItems = $resource("/api/data/GetEngagementData/").query();
return allEngagementItems;
}
输出:
输出detais:[object Object],[object Object],[object Object] ....
我的scope.getAllEngagementItems未获得更新,并且视图无法获取列表项。
答案 0 :(得分:1)
我没有看到output
是必要的。你可以回复一个承诺。
app.controller("EngagementController", function ($scope, WAFDatafactory) {
$scope.getAllEngagementItems = myfunction();
function myfunction() {
var items = WAFDatafactory.getAllEngagementItems();
items.$promise.then(function (results) {
$scope.$emit('UpdateEngagementCount', results.length);
console.log("Output detais :" + results);
}
, function (error) {
alert("Failed to Retrive data from server" + error);
console.log("Error detais :" + error);
});
return items;
}
});
您的代码无效的原因是:
运行myFunction()
时,WAFDatafactory.getAllEngagementItems()
返回了一个承诺,但实际的查询是以异步方式运行的。因此,当您返回时output
的值为undefined
。但是,undefined
是原始值而不是对象。因此,当您稍后更新output
时,它永远不会影响$scope.getAllEngagementItems
的实际值。