在Angular中,如何将URL作为参数发送到控制器?

时间:2015-10-26 13:25:00

标签: angularjs ionic-framework

从视图中如何将URL作为状态参数发送到控制器。当我发送一个简单的字符串时,一切正常。但是,当我尝试发送网址时,它无法正常工作。我也没有在控制台上收到任何错误消息。

控制器:

.controller('SubCategoriesCtrl', ['$scope', '$stateParams', '$ionicSlideBoxDelegate', 'DataProvider',
            function($scope, $stateParams, $ionicSlideBoxDelegate, DataProvider){
              console.log($stateParams)
    $scope.whichCategory = $stateParams.category;
    alert($scope.whichCategory);
    DataProvider.getSubCategories($scope.whichCategory).then(function(categories){
        $scope.categories = categories.data;  
    });

  }]);

查看:

 <ion-item class="item-icon-right" ng-repeat="category in categories" 
        href="#/categories/{{category.uri}}">
            <img src="{{category.img_url}}" class="img-responsive" alt="{{category.name}}">
 </ion-item>

类别数组对象:

[{
name: "xxx",
uri: "http://localhost:5000/api/v1.0/categories/xxx"
},
{
name: "yyy",
uri: "http://localhost:5000/api/v1.0/categories/yyy"
}]

1 个答案:

答案 0 :(得分:0)

确保对URI进行编码,例如使用标准Javascript encodeuricomponenthttp://www.w3schools.com/jsref/jsref_encodeuricomponent.asp)。

在您的控制器中添加以下功能:

$scope.encodeURL = function(uri) {
    return encodeURIComponent(uri);
};

并在视图中更改此部分:

href="#/categories/{{category.uri}}"

要:

href="#/categories/{{ encodeURL(category.uri) }}"