javascript - ng-bind-html 使用无法识别临时变量形式 ng-repeat 的函数

标签 javascript html angularjs angularjs-ng-repeat ng-bind-html

我是编程新手,这是我必须发布的第一个问题。

我想做的是使用ng-bind-html将五个图像文件放入由ng-repeat创建的div中。这五个图像文件在 ng-repeat 中的每个元素之间都会有所不同。

<div ng-repeat = "newGame in myGamesList">
            <div class="col-sm-4 col-lg-4 col-md-4">
                <div class="thumbnail">
                    <div>
                        <img src="{{newGame.thumbnail}}" alt="">
                    </div>
                    <div class="caption">
                        <h4 class="pull-right">{{newGame.price}}</h4>
                        <h4><a ng-style="{'font-size': nameSize((newGame.name | removeSubName).length)}" class="categoryGameName" href="#details/{{myGamesList.indexOf(newGame)}}">{{newGame.name | removeSubName}}</a>
                        </h4>
                        <p>{{newGame.description}}</p>
                    </div>
                    <div id="ratingDiv" style="margin-left: 8px; margin-right: 8px; margin-bottom: 5px;">
                        <div style="display: inline-block" ng-bind-html="trustedHtml"></div>
                        <p class="pull-right" style="color: #d17581">{{newGame.numberReviews}} reviews</p>
                    </div>
                </div>
            </div>
        </div>

我在myApp中也有这个,并且sce未定义等没有问题。

$scope.html = getStars(newGame);
$scope.trustedHtml = $sce.trustAsHtml($scope.html);

如果我将 getStars(newGame) 中的 newGame 替换为在代码范围内定义的内容,则代码可以工作,但是使用 newGame (尝试与 ng-repeat = "newGame in myGamesList" 中的临时变量匹配),什么也没有出现。

如何才能将 newGame 识别为正在迭代的每个元素?

函数getStars具有以下代码

$scope.getStars = function(game) {
    var numStars = (game.numberStars);
    iconString = '';
    for (i=0; i<Math.floor(numStars); i++) {
        iconString += '<img style="width:16px" class="starGlyph" src="images/fullStar.png" alt=""/>'
    }
    if (numStars%1 == 0.5) {
        iconString += '<img style="width:16px" class="starGlyph" src="images/halfStar.png" alt=""/>'
    }
    for (j=0; j<(5-Math.ceil(numStars)); j++) {
        iconString += '<img style="width:16px" class="starGlyph" src="images/emptyStar.png" alt=""/>'
    }
    return iconString;
};

如果有帮助的话。为了澄清这一点,我需要 myGamesList 中的每个 newGame 作为输入到 getStars 函数的参数。

抱歉,如果这很难理解,但我试图涵盖所有基础!

最佳答案

你的$scope.html来自哪里?

您应该做的是在 ng-bind-html 中使用 newGame ,如下所示

<div style="display: inline-block" ng-bind-html="getTrustedHtml(newGame)"></div>

在你的 Controller 中

$scope.getTrustedHtml = function(game) {
  // get the game HTML
  var html = $scope.getStars(game);
  // Return it as trusted HTML for ngBindHtml
  return $sce.trustAsHtml(html);
}

关于javascript - ng-bind-html 使用无法识别临时变量形式 ng-repeat 的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28596579/

相关文章:

javascript - 将 base64 编码的图像上传到 Node.js 服务器不起作用

javascript - Electron ipc通讯

javascript - 无论验证如何提交表单

javascript - 使用输入类型文件(多个)获取选择的文件并将它们存储在数组中

javascript - 为什么在单个复选框检查后我的 javascript 函数在所有行上被调用?

php - SQL 语法错误/查询

javascript - 如果表单验证为 false,则清除所有字段

javascript - 路由时在配置中的 templateUrl 上应用条件

javascript - Meteor 本地化/i18n 库比较

javascript - 一种阻止 WebSocket 错误显示在浏览器控制台中的方法