将$ scope变量传递给templateUrl angularjs而不显示在url中

时间:2015-08-09 19:11:19

标签: angularjs

我想将一些数据从控制器传递给templateUrl。可能吗?我不想在浏览器的网址中显示数据。

假设控制器是这样的:



    app.controller('PageController', function ($scope) {
    	$scope.index_init = function(role){
    		role.config = JSON.parse(role.config);
    		$scope.brand_id = role.config.brand_id;
    	}
    });




网址是这样的:



app.config(['$routeProvider', function ($routeProvider) {
$routeProvider
.when("/coupons", {
		templateUrl: function(){
            // i want brand_id here
			if(brand_id)
				return "/list?brand_id=" + brand_id;
			else
				return "/list";
		}, 
		controller: "ListController"})
.otherwise("/404", {template: "error", controller: "ErrorController"});




如何在templateUrl中获得brand_id?我不想在网址中传递brand_id,例如" /优惠券?brand_id = 2"或者喜欢" / coupons / 2"。

注意:控制器正在运行,然后点击网址链接。

3 个答案:

答案 0 :(得分:0)

如果您通过网址传递数据,则无法隐藏数据。

要通过应用程序获得一致的数据,您可以考虑使用$ rootScope,但记住全局变量仅在必要时使用。

答案 1 :(得分:0)

你无法隐藏,但你可以尝试黑客这可能是使用ui-routers嵌套视图而不是ng-route,所以当brand_id存在时,它会加载一个不同的视图,并在该模板中会有检查数据的逻辑。

Angular Ui-router

答案 2 :(得分:0)

据我所知(来自互联网)使用普通的java脚本里面的角度是不好的做法。我不知道为什么。如果有问题,请告诉我。

这是我做的: 我以前无视变量     app.config()

var brand_id = null;

然后在控制器中为此变量赋值。现在它在templateUrl中可用。 当然,用户可以使用控制台更改/访问此变量,但这对我来说没有风险,因为我只是想从url中删除这个额外的参数,因为它看起来很脏。