如何直接访问模块's在AngularJS上的HTML中的常量
How to directly access module's constant in HTML on AngularJS
我想直接在html中使用几个常量(在控制器中使用几次)。
例如,这是主要的应用程序模块:
angular.module('website', [])
.constant('ROUTES', (function () {
return {
SIGN_IN: '/sign/in'
}
})())
.config([..., 'ROUTES', function(..., ROUTES {
$routeProvider.when(ROUTES.SIGN_IN, {templateUrl: 'pages/sign_in.html', controller: 'SignInController'});
}]);
所以这很清楚,如何使用控制器中的常量。
但是我怎么能做这样的事情:
<html ng-app="website">
<body>
<a href="{{ROUTES.SIGN_IN}}">Sign in</a>
</body>
</html>
关键是要把所有路线都放在一个地方。那么,我可以这样做吗,或者我选择了错误的方式?
IMHO更好的方法是使用$rootScope在html中,每个作用域都继承自$rootScope,因此,如果当前作用域angular中不存在变量,请使用$rootScope中声明的变量。
一个好的方法是在运行";阶段";
angular.module('myApp')
.run(function ($rootScope) {
$rootScope.ROUTES = ROUTES
});
与其他答案略有相似,但IMO更清洁:
angular.module('website')
.constant("ROUTES", {
SIGN_IN: "/sign/in"
})
.run(function ($rootScope, ROUTES) {
$rootScope.ROUTES = ROUTES;
});
和:
<a href="{{ROUTES.SIGN_IN}}">Sign in</a>
HTH
我也喜欢$rootScope方法,但在某些情况下我使用了过滤器。
作为一个简化的例子,假设某个地方有一个常量CONFIG定义为一个具有BuildVersion属性的对象。你可以创建一个类似这样的过滤器:
angular.module('myApp')
.filter('interpolate', ['CONFIG', function (CONFIG) {
return function (text) {
return String(text).replace(/'%VERSION'%/mg, CONFIG.BuildVersion);
};
}]);
在HTML中:
<html ng-app="website">
<body>
<div>{{'%VERSION%' | interpolate}}</div>
</body>
</html>
或
<html ng-app="website">
<body>
<div>{{'bla bla bla %VERSION%.' | interpolate}}</div>
</body>
</html>
我们还可以使用类似于ROR的助手。
https://gist.github.com/merqlove/491023bcdd2145eef169#file-readme md
相关文章:
- angularjs移除焦点上的活动类并添加到下一个项目
- 尝试调用AngularJS上的函数时出错
- 同一页面上两个不同控制器的Angularjs双向绑定字段
- 仅显示页面AngularJS上的特定选项卡
- 使用大括号的 Internet Explorer 上的 AngularJS 数据绑定问题
- 自定义指令上的AngularJS单向绑定
- 路由后缀上的AngularJS特定HTML
- IE10+上的AngularJS,带有占位符原因的文本区域“;无效参数&”;
- 编辑配置文件页面上的 Angularjs 复选框值
- ng-click上的Angularjs-error:Args为空
- Visual Studio(DefinitelyTyped)上的AngularJS和Typescript有很多问题
- 页面加载调用函数上的 Angularjs
- 对象引用未设置为Internet Explorer上的AngularJS中的对象的实例
- 获取引用错误:$在Plunker上的angularJS指令中没有定义,但在Fiddle上没有定义
- 指令中mouseenter上的angularjs绑定不起作用
- 输入字段上的AngularJS货币筛选器
- 上的Angularjs & # 39; # 39;在ng-options中过滤
- IIS上的AngularJS -浏览器缓存不返回更新后的页面模板
- 取消路由更改上的AngularJS$超时
- 从指令更新值时,$rootScope上的Angularjs$watchCollection未触发