2015-10-30 38 views
0

我试图在字符串上运行$sce.trustAsHtml。它抛出Error: $sce:itype String Value is Required for 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

+0

这可能是一个很好的参考http://stackoverflow.com/questions/18340872/how-do-you-use-sce-trustashtmlstring-to-replicate-ng-bind-html-unsafe-in- angu – ArslanW

回答

1

我认为你遇到了问题,因为你正在为$scope.image分配一个值,然后相信它。尝试:

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

作为一个侧面说明,如果你想要在资源来拉,你应该使用trustAsResourceUrl,然后你可以在ngRepeat使用。只是让你知道你有选择。

$scope.image = $sce.trustAsResourceUrl(); 
+0

谢谢@Caleb,当我有空时,我会试试这个。 – chakeda