gpt4 book ai didi

javascript - 无法保留来自 $http.get() 的数据 - AngularJS 1.3.13

转载 作者:塔克拉玛干 更新时间:2023-11-01 19:07:46 25 4
gpt4 key购买 nike

在未能做出我在这里找到的任何其他答案后提出这个问题。

我正在尝试建立一个非常简单的客户端/服务器连接。

在我的服务器 (Django) 中,我有一个返回对象 JSON 的 View 。在我的客户端中,我有一个应该检索该数据的 $http.get()。

当我试图保留该数据时,问题就开始了。数据顺利到达客户端,但在 success() 函数结束后就消失了。

如有任何帮助,我们将不胜感激。

app.js:

angular.module('photoComments', [])

angular.module('photoComments').controller('PhotoCommentsController', function($http){

var vm = this;
vm.activePhoto = {};
vm.photos = [];
vm.setActivePhoto = setActivePhoto;

function setActivePhoto(photo) {
vm.activePhoto = photo;
}

vm.success = function(result) {
vm.photos = result.data;
}

$http.get("photos/").then(vm.success);
});

index.html

<body ng-app="photoComments" ng-controller="PhotoCommentsController as appCtrl">
<div class="container">
<div class="row">
<fieldset class="list-group-item">
<div class="col-md-2" ng-repeat="photo in appCtrl.photos">
<div>
<img ng-src="{{photo.photo_path}}" class="img-responsive" ng-click="setActivePhoto(photo)"/>
</div>
</div>
</fieldset>
</div>
</div>
<script type="text/javascript" src="/static/js/app.js"></script>
</body>

当使用 Chrome 开发者工具进行调试并对成功函数进行断点时,我看到数据已到达并且看起来正常。

enter image description here

最佳答案

最佳实践建议明确声明依赖关系以使其与缩小一起工作以便清理,我会这样做:

angular.module('photoComments', [])

angular.module('photoComments').controller('PhotoCommentsController', ['$http','$scope',function($http,$scope){

$scope.activePhoto = {};
$scope.photos = [];
$scope.setActivePhoto = setActivePhoto;

function setActivePhoto(photo) {
$scope.activePhoto = photo;
}

$scope.success = function(result) {
$scope.photos = result.data;
}

$http.get("photos/").then($scope.success);
});

<body ng-app="photoComments" ng-controller="PhotoCommentsController">
<div class="container">
<div class="row">
<fieldset class="list-group-item">
<div class="col-md-2" ng-repeat="photo in photos">
<div>
<img ng-src="{{photo.photo_path}}" class="img-responsive" ng-click="setActivePhoto(photo)"/>
</div>
</div>
</fieldset>
</div>
</div>
<script type="text/javascript" src="/static/js/app.js"></script>
</body>

你可以继续使用 vm 但你必须在 $scope 中解析并为 AngularJS 定义 var vm = $scope <= 1.1

关于javascript - 无法保留来自 $http.get() 的数据 - AngularJS 1.3.13,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28656698/

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