Я пытаюсь запустить $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
некорректно?
Я думаю, что у вас проблема, потому что вы назначаете $scope.image
значение, а затем доверяете ему. Пытаться:
$scope.image = $sce.trustAsHtml(determineNeverSettleImage("engaging,innovative"));
В качестве побочного примечания, если вы хотите задействовать ресурс, вы должны использовать trustAsResourceUrl
, который затем можно использовать в ngRepeat
. Просто чтобы вы знали, что у вас есть варианты.
$scope.image = $sce.trustAsResourceUrl();