详解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 相关文章推荐
JQuery最佳实践之精妙的自定义事件
Aug 11 Javascript
javascript学习笔记(五)原型和原型链详解
Oct 08 Javascript
JavaScript实现图片自动加载的瀑布流效果
Apr 11 Javascript
jQuery判断元素是否显示 是否隐藏的简单实现代码
May 19 Javascript
AngularJs Understanding the Controller Component
Sep 02 Javascript
Vue.JS入门教程之处理表单
Dec 01 Javascript
深入理解Javascript中的观察者模式
Feb 20 Javascript
详解nuxt sass全局变量(公共scss解决方案)
Jun 27 Javascript
简单实现节流函数和防抖函数过程解析
Oct 08 Javascript
Vue 实现从小到大的横向滑动效果详解
Oct 16 Javascript
微信小程序背景音乐开发详解
Dec 12 Javascript
JavaScript仿京东秒杀倒计时
Mar 17 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
PHP 生成的XML以FLASH获取为乱码终极解决
2009/08/07 PHP
使用PHP接受文件并获得其后缀名的方法
2015/08/05 PHP
PHP url的pathinfo模式加载不同控制器的简单实现
2016/08/12 PHP
PHP实现动态压缩js与css文件的方法
2018/05/02 PHP
JavaScript中OnLoad几种使用方法
2012/12/15 Javascript
JS获取页面input控件中所有text控件并追加样式属性
2013/02/25 Javascript
文件编码导致jquery失效的解决方法
2013/06/26 Javascript
JS将秒换成时分秒实现代码
2013/09/03 Javascript
Javascript表格翻页效果的具体实现
2013/10/05 Javascript
jQuery关键词说明插件cluetip使用指南
2015/04/21 Javascript
js实现的四级左侧网站分类菜单实例
2015/05/06 Javascript
JS实现的DIV块来回滚动效果示例
2017/02/07 Javascript
基于Node的React图片上传组件实现实例代码
2017/05/10 Javascript
vue.js删除动态绑定的radio的指定项
2017/06/02 Javascript
Angular利用trackBy提升性能的方法
2018/01/26 Javascript
angularjs 缓存的使用详解
2018/03/19 Javascript
jQuery中使用validate插件校验表单功能
2019/05/24 jQuery
微信小程序(订阅消息)功能
2019/10/25 Javascript
Python的subprocess模块总结
2014/11/07 Python
Python创建xml的方法
2015/03/10 Python
python如何在终端里面显示一张图片
2016/08/17 Python
Python3.X 线程中信号量的使用方法示例
2017/07/24 Python
恢复百度云盘本地误删的文件脚本(简单方法)
2017/10/21 Python
Python动态生成多维数组的方法示例
2018/08/09 Python
使用Selenium破解新浪微博的四宫格验证码
2018/10/19 Python
python 获取utc时间转化为本地时间的方法
2018/12/31 Python
python使用正则筛选信用卡
2019/01/27 Python
Spring @Enable模块驱动原理及使用实例
2020/06/23 Python
Python绘制K线图之可视化神器pyecharts的使用
2021/03/02 Python
css3 中实现炫酷的loading效果
2019/04/26 HTML / CSS
新加坡领先的在线生活方式和杂货购物网站:EAMART
2019/04/02 全球购物
如果一个类实现了多个接口但是这些接口有相同的方法名将会怎样
2013/06/16 面试题
学生处主任岗位职责
2013/12/01 职场文书
私人房屋买卖协议书
2014/10/04 职场文书
婚宴新郎致辞
2015/07/28 职场文书
使用Django框架创建项目
2022/06/10 Python