AngularJS动态修改img的URL
项目过程中,在首页面的左上角Logo可以达到配置化(或通过配置接口进行显示灯). 主要问题在directive
中相对路径问题.
项目目录结构:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| ├── css │ ├── fishBone.css │ └── imports.css ├── favicon.ico ├── img │ ├── arrow.png │ ├── jdb_blue_logo.png │ ├── jdb_logo.png │ ├── line-first.png │ ├── line-point.png │ ├── loading.gif │ └── title.png ├── index.html ├── js │ ├── controllers │ ├── directives │ ├── filters │ ├── main.js │ ├── modules │ ├── require.js │ └── services ├── lib │ ├── angular │ ├── bootstrap │ ├── fishBone.js │ ├── font-awesome-4.7.0 │ ├── jquery │ └── layui └── views ├── autoPublishFishBone.html ├── autoPublishFooter.html ├── autoPublishNavigationBar.html └── autoPublishVersion.html
15 directories, 18 files
|
在app
目录下,需要的jdb_blue_logo.png
与index.html
其相对路径为img/jdb_blue_logo.png
。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| ├── controllers │ └── index.controller.js ├── directives │ ├── indexFishBone.directive.js │ ├── indexFooter.directive.js │ ├── indexNavigationBar.directive.js │ └── indexVersion.directive.js ├── filters │ └── fishBone.filter.js ├── main.js ├── modules │ └── fishBone.module.js ├── require.js └── services ├── api.service.js ├── fishBone.service.js └── utils.service.js
5 directories, 12 files
|
views/autoPublishNavigationBar
1 2 3 4 5
| <a class="nav ar-brand" href="./"> <img title="logo" ng-src="{{logoSrc}}"> <span class="sub-title">XXLogoName</span> </a>
|
对应的directive
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| jdbAutoPublisherApps.directive('jdbAutoPublishNavBar', function() { return { restrict: 'EAC', replace: true, templateUrl: '././views/autoPublishNavigationBar.html', link: function(scope, elem, attr) { scope.logoSrc = "img/jdb_blue_logo.png"; }
}; });
|
注意directive最终会被引用到首页,所有,此处logoSrc的地址为相对index.html而言的路径.