搜尋

首頁  >  問答  >  主體

angular.js - angular頁面傳值問題

請問 angular-ui-route 中的

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

只能傳遞這種簡單字串嗎?
我想傳object該怎麼傳 用全域變數嗎?

巴扎黑巴扎黑2784 天前645

全部回覆(4)我來回復

  • phpcn_u1582

    phpcn_u15822017-05-15 16:54:32

    不只能傳簡單的字串, 當然能傳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等操作

    回覆
    0
  • 巴扎黑

    巴扎黑2017-05-15 16:54:32

    http://stackoverflow.com/a/25999849/2586541

    回覆
    0
  • 大家讲道理

    大家讲道理2017-05-15 16:54:32

    通常兩個方案
    1.全域變量,也就是使用$rootScope
    2.使用service,因為service是單一實例,不會銷毀,所以你可以定義一個通用的快取資料service用來存取數據,在需要傳遞資料的controller裡呼叫service.set(key,value) ,在需要讀取前次資料的controler裡呼叫service.get('key')

    回覆
    0
  • 伊谢尔伦

    伊谢尔伦2017-05-15 16:54:32

    忘記在哪個版本ui-router新增瞭如下方法,可保持url中的參數
    1.$state

     $state.go("state",{datas:{ID:data1,NAME:data2}})
    

    2.設定router

    .state('state',{
    url:'path/{datas:json}',
    params:{'datas':null}.
    ...
    })
    

    3.用$stateParam.datas來取

    回覆
    0
  • 取消回覆