Javascript 如何将对象序列化为ng include的参数?

Javascript 如何将对象序列化为ng include的参数?,javascript,angularjs,parameters,angularjs-ng-include,Javascript,Angularjs,Parameters,Angularjs Ng Include,如何构建对象的序列化数组,这些对象可以用作ng include的参数,以便从服务器动态加载数据 带请求的角度控制器和参数: app.controller("MyCtrl", function($scope) { $scope.elements = [{"id":43,"grid_id":0,"position":0,"name":"TrescArtykulu","snippet":"","hash_data":{"subname":"Treść artykułu","cache_age":"

如何构建对象的序列化数组,这些对象可以用作ng include的参数,以便从服务器动态加载数据

带请求的角度控制器和参数:

app.controller("MyCtrl", function($scope) {
  $scope.elements = [{"id":43,"grid_id":0,"position":0,"name":"TrescArtykulu","snippet":"","hash_data":{"subname":"Treść artykułu","cache_age":"60","article_id":"15746","category_id":"350"},"element_type":"Plugin"}];

  $scope.previewUrl = function() {
    // return "elements=" + $.param($scope.elements); // elements=TrescArtykulu=
    // GET http://localhost:3000/cms/pages/20/elements=TrescArtykulu= 404 (Not Found)

    // return "elements=" + JSON.stringify($scope.PageElementsAttributes); // elements=[{"id":43,"grid_id":0,"position":0,"name":"TrescArtykulu","snippet":"","hash_data":{"subname":"Treść artykułu","cache_age":"60","article_id":"15746","category_id":"350"},"element_type":"Plugin"}]
    // GET http://localhost:3000/cms/pages/20/elements=[%7B%22id%22:43,%22grid_id%22:0…5746%22,%22category_id%22:%22350%22%7D,%22element_type%22:%22Plugin%22%7D] 400 (Bad Request)
  }
});
角度视图:

<div ng-controller="MyCtrl">
  <ng-include src="previewUrl()"></ng-include>
</div>
我正在使用extracted from Angular buildUrl函数,但仍然不知道如何在MyCtrl中直接调用它,而不将其粘贴到我的代码中:

function forEachSorted(obj, iterator, context) {
  var keys = sortedKeys(obj);
  for (var i = 0; i < keys.length; i++) {
    iterator.call(context, obj[keys[i]], keys[i]);
  }
  return keys;
}

function sortedKeys(obj) {
  var keys = [];
  for (var key in obj) {
    if (obj.hasOwnProperty(key)) {
      keys.push(key);
    }
  }
  return keys.sort();
}

function buildUrl(url, params) {
  if (!params) return url;
  var parts = [];
  forEachSorted(params, function (value, key) {
    if (value == null || value == undefined) return;
    if (angular.isObject(value)) {
      value = angular.toJson(value);
    }
    parts.push(encodeURIComponent(key) + '=' + encodeURIComponent(value));
  });
  return url + ((url.indexOf('?') == -1) ? '?' : '&') + parts.join('&');
}

您可以创建示例函数,从对象创建url,如:

$scope.objectToUrl = function(obj) {

    var ret = [];
    for (var d in obj) {    
      ret.push(encodeURIComponent(d) + "=" + encodeURIComponent(obj[d]));    
    }    
    link = ret.join("&");
    return link
  }
请看下面的演示 var-app=angular.module'app',[]; 应用程序控制器'homeCtrl',函数$scope{ $scope.urlObject={ id:43, 网格id:0, 位置:0, 姓名:特雷斯卡蒂库鲁, 片段:, 元素类型:插件 }; $scope.objectToUrl=functionobj{ var-ret=[]; 对于obj中的var d{ ret.pushencodeURIComponentd+=+encodeURIComponentobj[d]; } link=ret.join&; 返回链接 } $scope.test=a $scope.link=$scope.objectToUrl$scope.urlObject; }; 你的目标 您的url:{{link}
$scope.objectToUrl = function(obj) {

    var ret = [];
    for (var d in obj) {    
      ret.push(encodeURIComponent(d) + "=" + encodeURIComponent(obj[d]));    
    }    
    link = ret.join("&");
    return link
  }