mTu*_*ran 4 javascript angularjs
我在head的标签中有一些全局变量:
<script type="text/javascript">
var apiRoot = 'http://localhost:8000/api',
apiUrl = apiRoot,
apiBadgeUrl = apiRoot + '/badges',
apiLevelUrl = apiRoot + '/levels',
apiBehaviorUrl = apiRoot + '/behaviors',
apiTrophyUrl = apiRoot + '/trophies',
apiUserUrl = apiRoot + '/users',
apiWidgetPreferencesUrl = apiRoot + '/widgetPreferences';
</script>
Run Code Online (Sandbox Code Playgroud)
我想在html文件中使用角度表达式,但我的尝试失败:
{{ $window.apiRoot }} or {{ apiRoot }}
Run Code Online (Sandbox Code Playgroud)
这些表达式是针对当前范围进行评估的.如果您尚未通过控制器在示波器中设置它们,则无法进行评估.见http://docs.angularjs.org/guide/expression
例:
function MyCtrl($scope)
{
$scope.apiRoot = apiRoot;
}
Run Code Online (Sandbox Code Playgroud)
HTML:
<div ng-controller="MyCtrl">
{{apiRoot}}
</div>
Run Code Online (Sandbox Code Playgroud)
如上所述,虽然上述示例有效,但不建议使用.更好的方法是在服务中设置这些变量,然后通过服务获取它们.
function MyCtrl($scope, apiRootService)
{
$scope.apiRoot = apiRootService.getApiRoot();
}
Run Code Online (Sandbox Code Playgroud)
服务:
angular.module('myServices', []).factory('apiRootService', function() {
var apiRoot = 'http://localhost:8000/api',
apiUrl = apiRoot,
apiBadgeUrl = apiRoot + '/badges',
apiLevelUrl = apiRoot + '/levels',
apiBehaviorUrl = apiRoot + '/behaviors',
apiTrophyUrl = apiRoot + '/trophies',
apiUserUrl = apiRoot + '/users',
apiWidgetPreferencesUrl = apiRoot + '/widgetPreferences';
return {
getApiRoot: function() {
return apiRoot
},
//all the other getters
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9702 次 |
| 最近记录: |