如何循环对象数组并重写属性值

时间:2016-03-14 21:36:40

标签: javascript angularjs ionic-framework

我有一个包含对象的Features数组。 featureUrl从它从数据库收集的服务返回。在我使用ngRoute的桌面角应用程序中,一切都很棒。但是,我正在构建一个使用UIRouter的Ionic移动应用程序,这似乎引起了一个问题。我无法构建如下所示的URL,因为它们都从州提供商输出'index.html#/ app / my-account'。

Ionic Code Abbrv

.config(function($stateProvider, $urlRouterProvider) {
  $stateProvider

.state('app', {
url: '/app',
abstract: true,
templateUrl: 'templates/menu.html',
controller: 'AppCtrl'
})

.state('app.my-account', {
url: '/my-account',
views: {
  'menuContent': {
    templateUrl: 'templates/my-account.html',
    controller: 'accountController'
  }
}
})

所以,我的问题是,在我的Ionic应用程序中,是否可以直接从尾部斜杠构建URL? (即index.html#/ my-account)所以它们匹配我的Svc对象,或者它们是否总是附加在'app'后面,如index.html#/ app / my-account?

如果没有,有人可以帮我循环我的对象并拆分Url字符串并将/ app /插入到url中,这样我的数据就能用于UIRouter吗?

Features
[{
featureClass: 'hasStuff',
featureUrl: 'index.html#/my-account',
featureBlah: 'blah'
},
{
featureClass: 'hasCoolStuff',
featureUrl: 'index.html#/my-profile',
featureBlah: 'blah' 
},
{
featureClass: 'hasMoreCoolStuff',
featureUrl: 'index.html#/motorcycles',
featureBlah: 'blah'
}]

这就是我在重写featureUrl字符串时的想法,但却陷入困境。

var featureUrlRewrite = function () {
  var index;
  var alteredUrl;
for (index = 0, index < $scope.Features.length, index++) {
   alteredUrl = $scope.featureUrl[index];
   featureUrl = alteredUrl.split("/").append("app/")
}
};

1 个答案:

答案 0 :(得分:0)

如果您使用正则表达式添加&#34; / app&#34;它可能会有效在#符号后面:

for(var index=0, index<$scope.Features.length(); index++){
   $scope.Features[index]['featureUrl'] = $scope.Features[index]['featureUrl'].replace("(.*#)(.*)", "$1/app$2"); 
}

这应该捕获#符号之前的所有内容以及之后的所有内容,作为单独的捕获和插入/应用程序在字符串的两个部分之间。

我对ngRoute或您正在使用的平台不熟悉,但希望有所帮助!