① angularjs中页面跳转怎样传参数
1. 基于ui-router的页面跳转传参
(1) 在AngularJS的app.js中用ui-router定义路由,比如现在有两个页面,一个页面(procers.html)放置了多个procers,点击其中一个目标,页面跳转到对应的procer页,同时将procerId这个参数传过去。
.state('procers', {
url: '/procers',
templateUrl: 'views/procers.html',
controller: 'ProcersCtrl'
})
.state('procer', {
url: '/procer/:procerId',
templateUrl: 'views/procer.html',
controller: 'ProcerCtrl'
})
(2) 在procers.html中,定义点击事件,比如ng-click="toProcer(procerId)",在ProcersCtrl中,定义页面跳转函数 (使用ui-router的$state.Go接口):
.controller('ProcersCtrl', function ($scope, $state) {
$scope.toProcer = function (procerId) {
$state.go('procer', {procerId: procerId});
};
});
(3) 在ProcerCtrl中,通过ui-router的$stateParams获取参数procerId,譬如:
.controller('ProcerCtrl', function ($scope, $state, $stateParams) {
var procerId = $stateParams.procerId;
});
2. 基于factory的页面跳转传参
举例:你有N个页面,每个页面都需要用户填选信息,最终引导用户至尾页提交,同时后一个页面要显示前面所有页面填写的信息。这个时候用factory传参是比较合理的选择(下面的代码是一个简化版,根据需求可以不同定制):
.factory('myFactory', function () {
//定义factory返回对象
var myServices = {};
//定义参数对象
var myObject = {};
/**
* 定义传递数据的set函数
* @param {type} xxx
* @returns {*}
* @private
*/
var _set = function (data) {
myObject = data;
};
/**
* 定义获取数据的get函数
* @param {type} xxx
* @returns {*}
* @private
*/
var _get = function () {
return myObject;
};
// Public APIs
myServices.set = _set;
myServices.get = _get;
// 在controller中通过调set()和get()方法可实现提交或获取参数的功能
return myServices;
});
3. 基于factory和$rootScope.$broadcast()的传参
(1) 举例:在一个单页中定义了nested views,你希望让所有子作用域都监听到某个参数的变化,并且作出相应动作。比如一个地图应用,某个$state中定义元素input,输入地址后,地图要定位,同时另一个状态下的列表要显示出该位置周边商铺的信息,此时多个$scope都在监听地址变化。PS: $rootScope.$broadcast()可以非常方便的设置全局事件,并让所有子作用域都监听到。
.factory('addressFactory', ['$rootScope', function ($rootScope) {
// 定义所要返回的地址对象
var address = {};
// 定义components数组,数组包括街道,城市,国家等
address.components = [];
// 定义更新地址函数,通过$rootScope.$broadcast()设置全局事件'AddressUpdated'
// 所有子作用域都能监听到该事件
address.updateAddress = function (value) {
this.components = value.slice();
$rootScope.$broadcast('AddressUpdated');
};
// 返回地址对象
return address;
}]);
(2) 在获取地址的controller中:// 动态获取地址,接口方法省略
var component = {
addressLongName: xxxx,
addressShortName: xxxx,
cityLongName: xxxx,
cityShortName: xxxx
};
// 定义地址数组
$scope.components = [];
$scope.$watch('components', function () {
// 将component对象推入$scope.components数组
components.push(component);
// 更新addressFactory中的components
addressFactory.updateAddress(components);
});
(3) 在监听地址变化的controller中:// 通过addressFactory中定义的全局事件'AddressUpdated'监听地址变化
$scope.$on('AddressUpdated', function () {
// 监听地址变化并获取相应数据
var street = address.components[0].addressLongName;
var city = address.components[0].cityLongName;
// 通过获取的地址数据可以做相关操作,譬如获取该地址周边的商铺,下面代码为本人虚构
shopFactory.getShops(street, city).then(function (data) {
if(data.status === 200){
$scope.shops = data.shops;
}else{
$log.error('对不起,获取该位置周边商铺数据出错: ', data);
}
});
});
4. 基于localStorage或sessionStorage的页面跳转传参
注意事项:通过LS或SS传参,一定要监听变量,否则参数改变时,获取变量的一端不会更新。AngularJS有一些现成的WebStorage dependency可以使用,譬如gsklee/ngStorage · GitHub,grevory/angular-local-storage · GitHub。下面使用ngStorage来简述传参过程:
(1) 上传参数到localStorage - Controller A
// 定义并初始化localStorage中的counter属性
$scope.$storage = $localStorage.$default({
counter: 0
});
// 假设某个factory(此例暂且命名为counterFactory)中的updateCounter()方法
// 可以用于更新参数counter
counterFactory.updateCounter().then(function (data) {
// 将新的counter值上传到localStorage中
$scope.$storage.counter = data.counter;
});
(2) 监听localStorage中的参数变化 - Controller B
$scope.counter = $localStorage.counter;
$scope.$watch('counter', function(newVal, oldVal) {
// 监听变化,并获取参数的最新值
$log.log('newVal: ', newVal);
});
② 页面跳转带的参数js如何传递到新页面
可以自己加在跳转地址之后,也可以保存到本地存储再在新页面取数据。
加在地址之后的参数,需要js在新页面获取,然后使用正则或者字符串处理方法获取具体的参数和值。
③ .js 文件怎样接受html 传递的参数,html 怎样传递参数给.js文件
1、首先创建一个文件夹,这个文件夹有一个js文件夹和一个html文件。js文件版夹用权来存放需要引入的js文件。
④ js如何接受传递的参数
把一个参数“一个网址”作为一个隐藏项放到1.html页面中,在JS中 用 document的函数来获得隐藏项的值就可以了。
像这样:
1.html中加入<input type="hidden" name="linksrc" value="一个网址(就是你需要的那个链接的参数)"> 在 a.js中 用 document.getElementByName("linksrc").value 就能获得1.html页面中这个隐藏项的值了。 或者用document.getElementById() 函数也可以,不过隐藏项要赋个ID就是了。
⑤ js中怎样接受上一个页面传过来的参数
hrequest = {};
hj.request.get = function (paramName) { var aParams = document.location.search.substr(1).split('&'); for (i = 0; i < aParams.length; i++) { var aParam = aParams[i].split('='); if (paramName.toLowerCase() == aParam[0].toLowerCase()) return aParam[1].trim(); }; return ""; };
hj.request.getUrl = function () { return top.location.href; };
hj.request.getRef = function () { return document.referrer; };参数名可以自己改,放在公共类里面当回成自己的类使答用
⑥ javascript中添加什么实现带参数的页面跳转
1.JS跳转页面参考代码
第一种:
<script language="javascript" type="text/javascript">
window.location.href="login.jsp?backurl="+window.location.href;
</script>
第二种:
<script language="javascript">
alert("返回");
window.history.back(-1);
</script>
第三种:
<script language="javascript">
window.navigate("top.jsp");
</script>
第四种:
<script language="JavaScript">
self.location='top.htm';
</script>
第五种:
<script language="javascript">
alert("非法访问!");
top.location='xx.jsp';
</script>
2.javascript中弹出选择框跳转到其他页面
<script language="javascript">
<!--
function logout()...{
if (confirm("你确定要注销身份吗?是-选择确定,否-选择取消"))...{
window.location.href="logout.asp?act=logout"