2015-10-06 27 views
0

我是AngularJS的新成员,我想知道$ routeParams-Service的读取限制...阅读URL参数..是否f.i. “/” - 斜线会破坏工作流程...? ..还是有一个可用的解决方法?

Codeexample:(部分来自离子入门APP)

App.js

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


.state('main.product/:productId', { 
    url: 'main/product/:productId', 
    views: { 
     'menuContent': { 
     templateUrl: 'templates/product.html', 
     controller: 'productIdCtrl' 
     } 
    } 
}) 



     .controller('productIdCtrl'), 
     function($scope, $location, $routeParams, ProductDataService){ 
      var pId = $routeParams.productId; // Reading productId from URL 
     } 

数据库的黯然可以使用内部 “/” - 削减为 “的productId” 杂牌。可能还有其他一些特殊字符......我还没有去探索..所以我不认为这会起作用..?

所以我的问题是,哪里是限制哪些字符需要一个主要的解决方法。 (为了从数据库中读取数据,我应该使用get/post和json.php ...但是我还没有在那里(但我肯定喜欢建议:D) 它应该简单地读取从数据库中..与已经实现了另一个系统上,我只需要“得到”和显示数据的一个小的搜索引擎数据...)

+0

显然'/'赢没有工作。可能会考虑创建一个友好的网址ID – charlietfl

+0

嗯,即时通讯仍然在学习AngularJS,但早于后来我需要一个工作理念:) – Fischer

+0

与角度无关,但与URL的工作方式无关。另一种方式是URL编码所有的ID和解码他们的过滤,但也有问题试图在REST API中使用它们也 – charlietfl

回答

0

这里正确

... 

.state('main.product.id', { 
    url: 'main/product/:productId', 
    views: { 
     'menuContent': { 
     templateUrl: 'templates/product.html', 
     controller: 'productIdCtrl' 
     } 
    } 
}) 

... 

.controller("AppController", function($scope, $state){ 
    $scope.openProduct = function(){ 
    $state.go('main.product.id', {productId: 1}); 
    }; 
}); 
+0

你的意思是“AppController”==“productIdCtrl”在这种情况下? ...但我不确定这将如何帮助我的问题,当一个ID是例如“TT/003/01”...如果我想切换detailview之间,或所有Id的概述 – Fischer

+0

它的只是示例主控制器通过名称AppController调用,并且我为元素“

click me
'放置了可单击的函数。如果你有查看产品列表(没有ID),那么你可以把它放到他的控制器中。如果你的id是'TT/003/01',那么你可以使用'main/product /:n1 /:n2 /:n3'和'$ state.go('main.product.id',{n1: 'TT',n2:'003',n3:'01'})' – machei