当使用ng-repeat变量作为PHP函数参数时,如何克服JavaScript错误


How to get ride of JavaScript errors when using ng-repeat variable as a PHP function parameter?

我在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() ?>';