gpt4 book ai didi

javascript - AngularJS 更新服务变量不起作用

转载 作者:行者123 更新时间:2023-11-28 07:21:26 24 4
gpt4 key购买 nike

我有一个图像列表。一个挨着另一个。我正在 try catch 单击的图像,填充模态 div 并显示它。

标记

    <section class="portfolio-grid column small-12" ng-controller="PortfolioCtrl">
<ul class="small-block-grid-2 medium-block-grid-4">
<li ng-repeat="portfolio in portfolios">
<a ng-click="showModal($index)" title="">
<img ng-src="{{portfolio.thumb}}" alt="">
<div class="details">
<h4>{{portfolio.name}}</h4>
</div>
</a>
</li>
</ul>
</section>
======== Some Other HTML ========
<div class="popup" ng-controller="ModalCtrl">{{info}}</div>

首先它显示{"name":"Test"},这是正常的。单击后,即使我相信单击时我正在更改服务内的变量,它也不会更新。

Controller

app.controller("PortfolioCtrl", function($scope, $rootScope, PortfolioService, ModalService){
$scope.portfolios = PortfolioService.list();
$scope.showModal = function(index){
ModalService.setInfo($scope.portfolios[index]);
}

});
app.controller("ModalCtrl", function($scope, ModalService){
$scope.info = ModalService.getInfo();
});

服务

app.service('ModalService', function(){
var modalInfo = {"name":"test"};

this.setInfo = function(data){
modalInfo = data;
};
this.getInfo = function(){
return modalInfo;
};

});

app.service('PortfolioService', function(){
var portfolios = [
{"name":"Project Name 1", "thumb":"http://placehold.it/480&text=1", "bigImg":"http://placehold.it/1000x500&text=1", "description":"Description text 1", "linkToLive": "#"},
{"name":"Project Name 2", "thumb":"http://placehold.it/480&text=2", "bigImg":"http://placehold.it/1000x500&text=2", "description":"Description text 2", "linkToLive": "#"},
]

this.list = function(){
return portfolios;
}

});

最佳答案

当 DOM 中遇到模态时,您的 ModalCtrl Controller 函数仅被调用一次。这意味着 $scope.info 设置为 ModalService.getInfo() 返回的初始值并且从未更改。

您可以观察 getInfo 返回值的变化:

app.controller("ModalCtrl", function($scope, ModalService){
$scope.$watch(function() { return ModalService.getInfo(); }, function(){
$scope.info = ModalService.getInfo();
});
});

关于javascript - AngularJS 更新服务变量不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30272156/

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