详解AngularJS中ng-src指令的使用


Posted in Javascript onSeptember 07, 2016

前言

在日常开发工作中,有很多需求是在一个页面上显示一些图片。有时,图片的地址路径是由客户端的脚本来设置(它有可能是从数据库中获取的)。

这是Angularjs的时代,当我们想使用Angularjs来实现在页面中展示图片,我们会简单使用: <img src=”path of image”>.

如果我们只考虑展示,毫无疑问它没问题,但是在浏览器的控制台中会显示一个 404 (not found) 错误。

详解AngularJS中ng-src指令的使用

为了解决这个问题,我们需要使用ng-Src。在使用 ng-Src之前,我想给你重现一下这个错误是如何产生的

示例代码如下:

示例源码

Script.js

var testApp = angular 
        .module("testModule", []) 
        .controller("testController", function ($scope) { 
          var animal = { 
            name: "CAT", 
            color: "White", 
            picture: "/images/cat.jpg", 
          }; 
 
          $scope.animal = animal; 
 
        });

Index.html

<html ng-app="testModule"> 
<head> 
  <title></title> 
  <script src="scripts/angular.min.js"></script> 
  <script src="scripts/js/script.js"></script> 
</head> 
<body> 
   
  <div ng-controller="testController"> 
    Name: {{animal.name}} 
    <br /> 
    Color: {{animal.color}} 
    <br /> 
    <img src="{{animal.picture}}" /> 
 
  </div> 
</body> 
</html>

在上述例子 中,有一个 animal 类,它拥有三个属性: Name, Color Picture,且已经赋值了。使用模型绑定器,在页面上我使用了这些属性。 对于图片,我使用了 <img> HTML标签 。

然后运行这个示例,效果如下:

详解AngularJS中ng-src指令的使用 

然后打开浏览器的控制台,就会看到这个错误。

无法加载资源:服务器响应状态为404 (Not Found)。

那么问题来了,为什么会出现这个错误?应该如何解决?

原因- 当DOM 被解析时,会尝试从服务器获取图片。 这时,src属性上的 Angularjs 绑定表达式 {{ model }}还没有执行,所以就出现了  404 未找到的错误。

解决方案- 解决的版本就是:在图片中使用ng-Src代替src属性,使用这个指令后,请求就只会在Angular执行这个绑定表达式之后才会发出。

使用ng-Src的示例如下:

<html ng-app="testModule"> 
<head> 
  <title></title> 
  <script src="scripts/angular.min.js"></script> 
  <script src="scripts/js/script.js"></script> 
</head> 
<body> 
  <div ng-controller="testController"> 
    Name: {{animal.name}} 
    <br /> 
    Color: {{animal.color}} 
    <br /> 
    <img ng-src="{{animal.picture}}" /> 
 
  </div> 
</body> 
</html>

现在你再打开浏览器的控制台,就不会出现:404 未找到, 这是因为使用了ng-Src

定义

ng-Src- 这个指令覆盖了<img />元素的src原生属性。

总结

以上就是这篇文章的全部内容,希望大家能够喜欢,如果有疑问可以留言交流。

Javascript 相关文章推荐
9个javascript语法高亮插件 推荐
Jul 18 Javascript
jQuery插件StickUp实现网页导航置顶
Apr 12 Javascript
javascript控制台详解
Jun 25 Javascript
jQuery+css实现的tab切换标签(兼容各浏览器)
Jan 28 Javascript
AngularJS向后端ASP.NET API控制器上传文件
Feb 03 Javascript
JQuery fileupload插件实现文件上传功能
Mar 18 Javascript
JS区分Object与Aarry的六种方法总结
Feb 27 Javascript
Vue-cli@3.0 插件系统简析
Sep 05 Javascript
vue+Vue Router多级侧导航切换路由(页面)的实现代码
Dec 20 Javascript
jQuery选择器之层次选择器用法实例分析
Feb 19 jQuery
javascript判断一个变量是数组还是对象
Apr 10 Javascript
vue-cli3 项目优化之通过 node 自动生成组件模板 generate View、Component
Apr 30 Javascript
AngularJS实现按钮提示与点击变色效果
Sep 07 #Javascript
JS实现简单易用的手机端浮动窗口显示效果
Sep 07 #Javascript
利用Angularjs实现幻灯片效果
Sep 07 #Javascript
轻松掌握JavaScript状态模式
Sep 07 #Javascript
JS简单实现tab切换效果的多窗口显示功能
Sep 07 #Javascript
JS实现的幻灯片切换显示效果
Sep 07 #Javascript
javascript宿主对象之window.navigator详解
Sep 07 #Javascript
You might like
利用 window_onload 实现select默认选择
2006/10/09 PHP
php下使用以下代码连接并测试
2008/04/09 PHP
php 遍历数据表数据并列表横向排列的代码
2009/09/05 PHP
如何让CI框架支持service层
2014/10/29 PHP
php微信公众号开发之欢迎老朋友
2018/10/20 PHP
9个javascript语法高亮插件 推荐
2009/07/18 Javascript
js onload处理html页面加载之后的事件
2013/10/30 Javascript
基于dropdown.js实现的两款美观大气的二级导航菜单
2015/09/02 Javascript
Jquery检验手机号是否符合规则并根据手机号检测结果将提交按钮设为不同状态
2015/11/26 Javascript
再次谈论React.js实现原生js拖拽效果引起的一系列问题
2016/04/03 Javascript
JavaScript中三个等号和两个等号的区别(== 和 ===)浅析
2016/09/22 Javascript
jQuery.parseHTML() 函数详解
2017/01/09 Javascript
重新理解JavaScript的六种继承方式
2017/03/24 Javascript
Vue-router 类似Vuex实现组件化开发的示例
2017/09/15 Javascript
页面点击小红心js实现代码
2018/05/26 Javascript
浅谈微信小程序flex布局基础
2018/09/10 Javascript
如何让node运行es6模块文件及其原理详解
2018/12/11 Javascript
详解Python中表达式i += x与i = i + x是否等价
2017/02/08 Python
用vue.js组件模拟v-model指令实例方法
2019/07/05 Python
解决Django 在ForeignKey中出现 non-nullable field错误的问题
2019/08/06 Python
python实现FTP文件传输的方法(服务器端和客户端)
2020/03/20 Python
Django import export实现数据库导入导出方式
2020/04/03 Python
Python 字典中的所有方法及用法
2020/06/10 Python
ubuntu16.04升级Python3.5到Python3.7的方法步骤
2020/08/20 Python
草莓网美国官网:Strawberrynet USA
2016/12/11 全球购物
美国购买汽车零件网站:Buy Auto Parts
2018/04/02 全球购物
印度购买眼镜和太阳镜网站:Coolwinks
2018/09/26 全球购物
opencv实现图像几何变换
2021/03/24 Python
高三自我鉴定范文
2013/10/19 职场文书
20岁生日感言
2014/01/13 职场文书
家具促销活动方案
2014/02/16 职场文书
交通安全寄语大全
2014/04/08 职场文书
大气污染防治方案
2014/05/19 职场文书
红楼梦读书笔记
2015/06/25 职场文书
最新的离婚协议书范本!
2019/07/02 职场文书
《金肉人》米特&《航海王》阿鹤声优松岛实因胰脏癌去世 享寿81岁
2022/04/13 日漫