假设我需要在用户发出的每个请求中包含GroupId参数,但我不想修改每个服务调用以包含它.是否可以将GroupId自动附加到所有请求,无论是POST还是GET查询字符串?
我一直在研究拦截器request功能,但无法弄清楚如何进行更改
**编辑**
下面的当前工作样本是Morgan Delaney和haimlit建议的组合(我认为无论如何它都是一个组合).基本思想是,如果请求是POST,请修改config.data.对于GET,请修改params.到目前为止似乎工作.
还不清楚提供者系统如何在Angular中工作,所以我不确定在这里修改data.params属性是否完全合适.
.config(['$httpProvider', function ($httpProvider) {
$httpProvider.interceptors.push(['$rootScope', '$q', 'httpBuffer', function ($rootScope, $q, httpBuffer) {
return {
request: function (config) {
if (config.data === undefined) {
//Do nothing if data is not originally supplied from the calling method
}
else {
config.data.GroupId = 7;
}
if (config.method === 'GET') {
if (config.params === undefined) {
config.params = {};
}
config.params.GroupId = 7;
console.log(config.params);
}
return config;
}
};
} ]);
} …Run Code Online (Sandbox Code Playgroud) 我一直收到这个错误:
`错误:[$ injector:nomod]模块'ui.router'不可用!您要么错误拼写了模块名称,要么忘记加载它.
但我很确定我已正确配置所有内容
该项目是由Yeoman创建的,并使用Bower来管理依赖项,Grunt构建了所有项目.
yeoman角度生成器创建了带有基本ngRouter的样板,所以我安装了ui.router
bower install angular-ui-router --save
Run Code Online (Sandbox Code Playgroud)
角度版本
1.2.16
Run Code Online (Sandbox Code Playgroud)
凉亭文件
上面的行在依赖项列表中使用此行更新了bower.json文件:
"angular-ui-router": "~0.2.10"
Run Code Online (Sandbox Code Playgroud)
app模块设置
我更新了app.js文件,添加了对ui.route的依赖(除了各种其他依赖项)angular.module('app',['ngRoute',...'ui.router'])
的index.html
<!-- build:js(.) scripts/vendor.js -->
<!-- bower:js -->
...
<script src="bower_components/angular-ui-router/release/angular-ui-router.js"></script>
<!-- endbower -->
<!-- endbuild -->
Run Code Online (Sandbox Code Playgroud)
我在上面的目录中有上面的文件,我很肯定它就在那里(我复制并粘贴路径以避免拼写错误).我也尝试了缩小版本没有区别.
编辑
我对所有这些都非常非常新(角度,凉亭,自耕农等)所以我很可能这样做是错的,所以我不再需要包含ui.router依赖吗?我的意思是,它是否已经以某种方式集成到核心角度框架?ui.router被弃用了吗?
根据我读到的最佳实践,在我的控制器中,我将模型分配给$ scope而不是将多个单独的值分配给$ scope:
.controller('TestCtrl', function AboutCtrl($scope, $http) {
var model = {
name: 'Bob',
address: 'Squaresville'
}
};
$scope = model;
})
Run Code Online (Sandbox Code Playgroud)
在我的模板中:
<input type="text" ng-model="model.name" /> {{model.name}}
<input type="text" ng-model="model.address" /> {{model.address}}
Run Code Online (Sandbox Code Playgroud)
但是当页面最初加载时,文本框没有任何价值.但是当我输入时,匹配的{{...}}标签会更新.
为什么初始值不会更新?