$ sce.trustAsHtml Сбой на строке

0

Я пытаюсь запустить $sce.trustAsHtml в строке. Он выбрасывает ошибку: $ sce: значение привязки itype требуется для SCE Trust Call, даже если я использую его для функции, которая возвращает строку.

Здесь PLUNKER и фрагмент, вызывающий ошибку.

/*****
 * Should display two images
 * *****/
$scope.image = determineNeverSettleImage("engaging,innovative");
$scope.image = $sce.trustAsHtml($scope.image);

/************
 * This function should:
 *  return 3 images if passed "engaging,innovating,partnering",
 *  return 2 images if passed "engaging,innovating",
 *  return 1 image if passed "engaging"
 **************/
function determineNeverSettleImage(neverSettle) {
  if (neverSettle.split(",").length > 1) {
    neverSettleArray = neverSettle.split(",");
    neverSettleStr = "";
    for (i = 0; i < neverSettleArray.length; i++) {
      if (neverSettleArray[i] == "engaging") {
        neverSettleStr += '<img src="http://lorempixel.com/400/200/" width="56px" height="56px">';
      }
      if (neverSettleArray[i] == "innovating") {
        neverSettleStr += '<img src="http://lorempixel.com/400/200/" width="56px" height="56px">';
      }
      if (neverSettleArray[i] == "partnering") {
        neverSettleStr += '<img src="http://lorempixel.com/400/200/" width="56px" height="56px">';
      }
      if (neverSettleArray[i] == "synergy") {
        neverSettleStr += '<img src="http://lorempixel.com/400/200/" width="56px" height="56px">';
      }
    }
    $scope.test = neverSettleStr;
    neverSettleStr = neverSettleStr + '';
    return neverSettleStr;
  } else {
    switch (neverSettle) {
      case "engaging":
        neverSettle = '<img src="http://lorempixel.com/400/200/" width="56px" height="56px">';
        return neverSettle;
      case "innovating":
        neverSettle = '<img src="http://lorempixel.com/400/200/" width="56px" height="56px">';
        return neverSettle;
      case "partnering":
        neverSettle = '<img src="http://lorempixel.com/400/200/" width="56px" height="56px">';
        return neverSettle;
      case "synergy":
        neverSettle = '<img src="http://lorempixel.com/400/200/" width="56px" height="56px">';
        return neverSettle;
    }
  }
}

Возможно, что-то не так с моей логикой? Или я использую $sce.trustAsHtml некорректно?

Теги:

1 ответ

1

Я думаю, что у вас проблема, потому что вы назначаете $scope.image значение, а затем доверяете ему. Пытаться:

$scope.image =  $sce.trustAsHtml(determineNeverSettleImage("engaging,innovative"));

В качестве побочного примечания, если вы хотите задействовать ресурс, вы должны использовать trustAsResourceUrl, который затем можно использовать в ngRepeat. Просто чтобы вы знали, что у вас есть варианты.

$scope.image = $sce.trustAsResourceUrl();
  • 0
    Спасибо @Caleb, я попробую это, когда у меня будет время снова.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню