关于使用ng-src
来显示图像,此代码在运行时工作 - 但不在初始页面加载时工作:
<div class="imageHolder" ng-click="openWidgetSettings(widget);" ng-show="widget.showInitImage">
<img ng-src="../../Images/{{widget.initImage}}" />
<div class="caption">Click to configure</div>
</div>
在我的初始页面加载时出现错误:
GET http://localhost:33218/Images/ 403 (Forbidden)
然而在运行时,当我将图像拖放到我的仪表板上时,前端不会再抱怨了。
我确实意识到我正在使用的仪表板框架是在我的页面上动态添加div,然后渲染图像;但是,为什么现在不抱怨?
换句话说,我试图避免使用这样的完整路径:
<img ng-src="http://localhost:33218/Images/{{widget.initImage}}" />
****更新****
这段代码可以工作,我不需要指定“... / .. /”相对路径。
<div class="imageHolder" ng-click="openWidgetSettings(widget);" ng-hide="widget.gadgetConfigured">
<img ng-src="Images/{{widget.initImage}}" />
<div class="caption">Click to configure</div>
</div>
此外,我的{{widget.initImage}}在重新加载时又回来了 - 一个应用程序错误!
答案 0 :(得分:5)
将您的代码更改为以下内容。
您需要检查widget.initImage是否已初始化。在将它传递给ng-src之前。
在widget.initImage上使用ng-if
<div class="imageHolder" ng-click="openWidgetSettings(widget);" ng-show="widget.showInitImage">
<img ng-src="../../Images/{{widget.initImage}}" ng-if="widget.initImage" />
<div class="caption">Click to configure</div>
</div>
答案 1 :(得分:2)
我建议你像这样使用ng-init指令......
<div class="imageHolder" ng-click="openWidgetSettings(widget);" ng-show="widget.showInitImage" ng-init="getImgUrl()">
<img ng-src="{{myImgUrl}}" />
<div class="caption">Click to configure</div>
</div>
在你的控制器中,
$scope.getImgUrl=function()
{
$scope.myImgUrl= //get your img url whatever it is...
// You can also set widget.showInitImage variable here as well...
}