AngularJS 如何在页面上获取后端传参

sweeeeeet 发布于 2016/10/13 12:54
阅读 1K+
收藏 0

后端是spring,返回页面及参数如下:

model.put("userName", userName);
			return "/cluster";



返回了cluster.html,并传回了userName

如果使用$http.post()方法,会在success中拿到这个变量,但如何在页面刚刚加载时显示呢

加载中
0
逝水fox
逝水fox

给定一个初始值。在发起post请求,后更新该值。

必要时使用promise来控制

逝水fox
逝水fox
回复 @sweeeeeet : 因为ng-include实际是另外一个请求加载的模版文件(并且前端有缓存),所以你的el写在。这个情况你只能是在主页面的scope里引用userName这个属性,给模版引用或者使用AngularJS的指令。
sweeeeeet
sweeeeeet
回复 @逝水fox : 这个变量是在页面的header中出现的,我把他抽成模板,用ng-include插入到页面中。原来的用法不是模板,直接写在大页面里,用的是EL表达式${userName}可以获得这个变量,但include之后却get不到了,所以我在找解决办法
sweeeeeet
sweeeeeet
回复 @逝水fox : 我觉得userName这个变量一定在request中,但我还不知道怎么get这个变量,原理一定是这样的
逝水fox
逝水fox
回复 @sweeeeeet : 在页面刚刚加载就显示这个是做不到的除非数据跟着页面一起过来。按照你ajax的处理过程,延迟是肯定有的。所以你只能是给一个初始值(比如空对象,空列表或空串等),在ajax返回回调前先用于初始化页面界面。
sweeeeeet
sweeeeeet
谢谢,我再研究一下
0
逝水fox
逝水fox

通过指令指定模版文件并为他初始化scope

// 顶部指令
app.directive('appHeader', function() {
	return {
		restrict: 'A',
		templateUrl: contextPath + '/view/common/header.html',
		replace: true,
		controller: function($scope, $element, $attrs) {
			if(userInfo.superAdmin) {
				$scope.avatarCode = 'admin';
			} else if(userInfo.userSex === 'MALE') {
				$scope.avatarCode = 'male';
			} else {
				$scope.avatarCode = 'female';
			}
		}
	}
});

使用:

<header data-app-header></header>



这样的好处是不污染主页面控制器的scope

0
sweeeeeet
sweeeeeet

@逝水fox 算了,谢谢你,我现在对Angular理解太浅了,有点理解但不完全理解,让我自己想想吧

返回顶部
顶部