gpt4 book ai didi

javascript - 在angularJS中绑定(bind)服务数据

转载 作者:行者123 更新时间:2023-11-30 08:43:54 25 4
gpt4 key购买 nike

我有一个用于在 2 个 Controller 之间共享数据并检索数据列表的服务:

myApp.service('DataService', function($http) {
this.data = [];
this.loadData = function() {
$http.get('/api/data').success(function(data) {
this.data= data;
})
};

});

在我的 Controller 中调用:

myApp.controller('appController', function($scope, DataService) {
$scope.DataService= DataService;
DataService.loadData();
});

并显示在这里:

<div ng-controller="appController">
<li ng-repeat='item in DataService.data'>
<a href="#item/{{item.ID}}"> View Item</a>
</li>
</div>

运行时,它不显示任何内容。我用一些警告框运行它,可以看到数据列表中填充了我想要显示的数据,但没有显示其他信息。

最佳答案

您没有正确使用您的服务。现在,Angular 很难监视服务属性的变化。与其将数据存储为自身的属性,不如简单地将其返回给调用者。尝试:

myApp.service('dataService', function($http) {
this.loadData = function() {
return $http.get('/api/data').then(function(data) { return data; });
}
}

然后在 Controller 中调用它,例如:

myApp.controller('appController', function($scope, dataService) {
$scope.data = dataService.loadData();
});

并绑定(bind)到像这样的 View 中:

<div ng-controller="appController">
<li ng-repeat="item in data track by $id">
<a href="#item/{{ item.ID }}">View Item</a>
</li>
</div>

关于javascript - 在angularJS中绑定(bind)服务数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23697863/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com