如何将数据从一个状态传递到另一个状态作为参数或使用Angular Service。

时间:2017-05-02 06:02:42

标签: javascript angularjs

我有以下成功功能:

if(data.status=="success")  {               
  var sessionid = data.member.member_id;
  var dd = data.member;
  $state.go('dashboardsnewsucc.dashboardefault', {userid: sessionid});
}

data.member包含JSON数据我不想只有data.member.member_id;但是我希望data.member中存在的所有对象都必须将数据发送到dashboardsnewsucc.dashboardefault。

这两个州是:

.state('dashboardsnewsucc', {
            abstract: true,
            url: "/dashboardsnewsucc/:userid",
            templateUrl: "views/common/content-empty.html",
        })

        .state('dashboardsnewsucc.dashboardefault', {
            url: "/dashboardefault",
            templateUrl: "views/userdashboard.html",
            data: { pageTitle: 'Hive Dashboard',specialClass: 'loginscreen-gray-bg' },           
        })

在前端,我将data.member.member_id取为{{$state.params.userid}}.

5 个答案:

答案 0 :(得分:0)

JS:

$stateProvider
.state('dashboardsnewsucc', {
    templateUrl: 'dashboardsnewsucc',
    controller:  'dashboardsnewsuccCtrl'
})
.state('view', {
    templateUrl: 'dashboardsnewsucc',
    params:      {'param': null, 'paramOther': null}, // Set By Default Values
    controller:  'dashboardsnewsuccCtrl'
})

发送params:

$state.go('view', { 'param': 123, 'paramOther': 'This is a test' })

然后在你的控制器中访问:

app.controller('dashboardsnewsuccCtrl', function($scope, $stateParams) {
 var index = $stateParams.param;
 var anotherKey = $stateParams.paramOther;
});

答案 1 :(得分:0)

为了做你想要实现的目标,你可以简单地传递整个对象而不是只传递一个对象属性。例如,您首先检索member_id,然后将该值仅传递给下一个状态。

但不是这样做,你可以这样写:

if(data.status=="success")  {               
    var sessionid = data.member.member_id;
    var dd = data.member;
    $state.go('dashboardsnewsucc.dashboardefault', 
        {
            member: dd
        }
    );
}

这会将整个成员对象传递给下一个状态,您可以在下一个状态中访问整个成员对象,如: $state.params.member 这将为您提供完整的成员对象,其中包含在之前状态中返回的所有属性。

答案 2 :(得分:0)

将其作为字符串传递

In [54]: %timeit pd.DataFrame(df1['x,y'].values.tolist(), index=df1['id']).stack().reset_index(level=1, drop=True).reset_index(name='x,y')
1000 loops, best of 3: 1.49 ms per loop

In [55]: %timeit pd.DataFrame({'id': np.repeat(df1['id'].values, df1['x,y'].str.len()), 'x,y': df1['x,y'].values.sum()})
1000 loops, best of 3: 562 µs per loop

#piRSquared solution
In [56]: %timeit pd.DataFrame({'id': df1['id'].repeat(df1['x,y'].str.len()), 'x,y': df1['x,y'].sum() })
1000 loops, best of 3: 712 µs per loop

if(data.status=="success") { var sessionDetails = JSON.stringify(data.member); var dd = data.member; $state.go('dashboardsnewsucc.dashboardefault', {userid: sessionDetails}); }

的控制器中
dashboardsnewsucc

虽然我觉得您的相关详细信息更适合存储在Cookie中。

答案 3 :(得分:0)

您需要先将数据字符串化。

if(data.status=="success")  {               
  var sessionid = data.member.member_id;
  var dd = data.member;
  $state.go('dashboardsnewsucc.dashboardefault', {userid: JSON.stringify(sessionid)});
}   

在控制器内部,yoy获取数据,你需要再次解析JSON

.controller('Ctrl', function($scope, $stateParams) {
 var userid = JSON.parse($stateParams.userid)

})

如果您不想在网址中显示数据:

state('dashboardsnewsucc', {
            abstract: true,
            url: "/dashboardsnewsucc",
         params: {
             userid:null
          }
            templateUrl: "views/common/content-empty.html",
        })

        .state('dashboardsnewsucc.dashboardefault', {
            url: "/dashboardefault",
            templateUrl: "views/userdashboard.html",
            data: { pageTitle: 'Hive Dashboard',specialClass: 'loginscreen-gray-bg' },           
        })

答案 4 :(得分:0)

路线

.state('some-state', {
        url: 'someUrl',
        parent: 'home',
        params: {
          myObj: null
        }});

假设你想从 S1 收到一个陈述 S2 的对象,那么,在 S1

var params = {
          myObj: "HELLO FROM THE OTHER SIDE"
        };
        $state.go("confirmation-auth-email", params);

S2 上,你会收到这样的信息:

function someControllerFunction($scope,$state) {console.log(JSON.parse($state.params));}
相关问题