我在PHP中有一个qsys::getFullUrl()
函数,它将完整的URL解析为图像。
在参数中,我需要包含一个角度变量。
令人惊讶的是,这实际上有效,并显示图像:
<tr ng-repeat="book in books | orderBy:'rank':true">
<td style="border-top:none"><img style="width: 100px" src="<?= qsys::getFullUrl('customImages/{{book.idcode}}.png') ?>"/></td>
<td style="border-top:none" >
<div class="h4">{{book.title}}</div>
<div><small>{{book.description}}</small></div>
</td>
</tr>
但是,我也收到Javascript错误:
NetworkError: 404 Not Found - http://localhost/test/customImages/%7B%7Bbook.idcode%7D%7D.png"
如何摆脱这些 JavaScript 错误?
我对 Angular 了解不多,但在 PHP 中,我可能会做这样的事情:
<?= url_decode(qsys::getFullUrl('customImages/{{book.idcode}}.png')) ?>
然后,这将解码值,但它将解码该函数返回的所有内容,因此您可能只想对其进行解码,您可以这样做:
$book_file = qsys::getFullUrl('customImages/{{book.idcode}}.png');
echo str_replace("%7B%7Bbook.idcode%7D%7D", "{{book.idcode}}", $book_file) ?>
您甚至可以让您的字符串替换这样做以仅替换{
和}
:
$find = array("%7B","%7D");
$replace = array("{","}");
echo str_replace($find, $replace, qsys::getFullUrl('customImages/{{book.idcode}}.png')) ?>
使用以下任一方法都应该会得到一个最终到浏览器的 URL,如下所示:
http://localhost/test/customImages/{{book.idcode}}.png"
然后Angular应该能够处理它。
我用ng-src
解决了这个问题:
<tr ng-repeat="book in books| orderBy:'rank':true">
<td style="border-top:none"><img style="width: 100px" ng-src="{{absolutePath}}customImages/{{book.idcode}}.png"/></td>
<td style="border-top:none" >
<div class="h4">{{book.title}}</div>
<div><small>{{book.description}}</small></div>
</td>
</tr>
并将 fullUrl 放入模块中:
$scope.absolutePath = '<?= qsys::getFullUrl() ?>';