如何使用angular-ui-router将对象数组传递给$ stateParams值

时间:2017-09-03 14:43:43

标签: javascript angularjs angular-ui-router

我的表格是这样的:

$scope.models = [{}, {}];

<div classs="" ng-repeat="each_model in models"> 
 <input class="" model="each_model.name"> Name
 <input class="" model="each_model.class"> Class
 <input class="" model="each_model.city"> City
</div>

目前我将$ scope.models传递给$ stateParams,方法是将完整数据传递给参数:

$state.go('class_report', {parameters: models});

==我的app.js

        .state('class_report', {
            url: '/class_report?parameters',
            templateUrl: 'views/class_report.html',
        })

但是以这种方式传递数据会使URL无法读取。所以可能有问题,是否有办法以这样的方式传递此表单数据,使其可读。 希望我的问题很明确。

2 个答案:

答案 0 :(得分:0)

  

所以可能有问题的是,有没有办法以这样的方式传递这个表单数据它应该是可读的

简短回答 - 否。

您可以传递原始值,如字符串,整数和布尔值

但是,您可以将此值存储在module.service下的某个唯一键下,并将此键传递到您的网址中。之后,您可以轻松加载它。

例如:

$scope.models = [{}, {}];
var uniqueKey = SomeService.setData($scope.models);
$state.go('class_report', {key: uniqueKey});

在其他控制器中:

$scope.models = SomeService.getData($stateParams.key);

其中SomeService代码段为:

app.service('SomeService',function () {

   var self = this;
   self.models = {}; 

   self.setData = function(models){
     self.models[key] = models;
     return key;
   } 

    self.getData = function(key){
     return self.models[key]
   } 

})

答案 1 :(得分:0)

最好的方法是创建服务:

.factory('YourService',[function(){
    var models= {};
    return {
        set: function(data){
            models= data;
        },
        get: function(){
            return models;
        }
    }

}]);

并像这样调用它(在控制器中注入它之后): var models = YouService.get()获取数据

YourService.set(data)设置数据