angular页面传值问题


请问 angular-ui-route 中的


 $state.go('xxx',{id:'1'})

只能传递这种简单字符串吗?
我想传object应该怎么传 用全局变量吗?

angular angularjs

阿呆正传。 10 years, 1 month ago

通常两个方案
1.全局变量,也就是使用$rootScope
2.使用service,因为service是单一实例,不会销毁,所以你可以定义一个通用的缓存数据service用来存取数据,在需要传递数据的controller里调用service.set(key,value) ,在需要读取前次数据的controler里调用service.get('key')

おっぱい最高 answered 10 years, 1 month ago

习惯性沉默 answered 10 years, 1 month ago

不只能传简单的字符串, 当然能传object了

  1. router配置中标明参数的名字. 以ui-router为例

      
       $stateProvider.state('state1', {
        url: '/path/:id', // 这个地方用简单字符串
        templateUrl: '/path/to.html',
        params: {
            obj: null // 这个地方就可以随便你用了. 因为这个参数没在state的url中体现出来
        }
    }).
      
     
  2. 使用$state进行页面切换

      
       $state.go('state1', {
        id: '22',
        obj: {
            key: 'value'
        }
    });
      
     
  3. 在controller中使用$stateParams中获取参数

      
       console.log($stateParams.obj)
      
     

当然传递这种在url中没有体现的参数, 会在后退等操作时, 参数不可用.

可以用 @whosesmile 的方法进行操作. 使用service. LZ可以看一下angular内建的 $cacheFactory . 使用这个可以生成一个缓存, 执行 put get remove removeAll 等操作

茶几上的杯具9 answered 10 years, 1 month ago

Your Answer