gpt4 book ai didi

javascript - 为什么更改作用域变量时我的 View 没有更新?

转载 作者:行者123 更新时间:2023-12-03 06:09:28 25 4
gpt4 key购买 nike

导航栏(main.html):

<nav class="navbar navbar-dark bg-primary">
<button class="navbar-toggler hidden-sm-up" type="button" data-toggle="collapse" data-target="#collapseEx2">
<i class="fa fa-bars"></i>
</button>

<div class="container" ng-controller="UpComingGamesCtrl">
<div class="collapse navbar-toggleable-xs" id="collapseEx2">
<a class="navbar-brand" href="#/">VideoGame Releases</a>
<form ng-submit="searchGame()">
<input type="text" id="form1" class="form-control" ng-model="gameToSearch">
</form>
</div>
</div>
</nav>

Controller :

...
$scope.games = [];
$scope.searchGame = function () {

if ($scope.gameToSearch) {
console.log('entered with text');
getUpcomingGames.getGame($scope.gameToSearch).get({}, function (data) {
$scope.games = data.results;
});
}
}

upcoming_games_template.html:

<div class="row" ng-repeat="games in games | chunkBy:3">
<div class="col-md-4" ng-repeat="game in games">
<div class="card">
<div class="view overlay hm-white-slight card-image">
<img src="{{game.image.screen_url}}" class="img-fluid" alt="">
<a href="#/">
<div class="mask waves-effect waves-light"></div>
</a>
</div>

<div class="card-block">
<h4 class="card-title">{{game.name}}</h4>
<p class="card-text">{{(game.original_release_date | limitTo: 10) || getFutureReleaseDate(game) }}</p>
<a href="#/" class="center-block btn btn-info waves-effect waves-light">Read more</a>
</div>
</div>
</div>
</div>

我正在尝试在 main.html 文件中的导航栏上创建搜索功能,当用户按下 Enter 键时,我会使用该搜索从外部 API 获取信息并更新即将到来的_games 模板。现在,我知道我输入了“searchGame”函数,因为它会记录到控制台,并且我知道我返回的数据是好的。但是当我尝试更改变量“$scope.games = data.results;”时, View 不会更新。现在,如果我在即将到来的_games_template.html 中创建相同的搜索栏表单,它就可以完美运行。

为什么会发生这种情况?我在 main.html 文件中声明了 Controller ,所以它应该工作相同,对吗?

我也不认为在这种情况下我需要 $scope.$apply() 。

谢谢。

最佳答案

可能您正在使用两个不同的 Controller ,因此您将填充一个 Controller 的 $scope.games 变量,同时填充另一个 Controller 的 $scope.games 变量。如果你提供一个 jsfiddle 可能会更简单。如果您想要快速解决方案,您应该尝试使用 $rootScope.games 变量并重复相同的 rootscope 变量:

<div class="row" ng-repeat="games in $root.games | chunkBy:3">
<!-- Content -->
</div>

这不是更好的解决方案,但它应该有效。

关于javascript - 为什么更改作用域变量时我的 View 没有更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39379358/

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