如何使用angularjs从控制器传递参数到url

时间:2016-07-22 10:57:27

标签: javascript angularjs

我正在1页中添加和编辑。清单如下表所示。当我点击编辑按钮时从列表中,我想在url中传递该项目的ID。因此,如果意外刷新页面,数据将保留在编辑表单中。而且我也在使用嵌套视图(例如:settings.couriers) 我的HTML

<button class="btn btn-primary btn-xs" ng-click="editCourier({id: x.id})">
                                        <i class="fa fa-pencil"></i>
                                    </button>

我的controller.js要编辑

$scope.editCourier = function(id, index) {
        $.ajax({
            'type': "POST",
            'async': false,
            'global': false,
            'url':'settings/editCourier',
            'data': 'id='+id, 
            'dataType': "json",
            'success': function (data) { 
                $scope.formData = data[0];                
            }
        });     
    }

有什么出路吗?请帮忙。谢谢

3 个答案:

答案 0 :(得分:0)

变化:

<button class="btn btn-primary btn-xs" ng-click="editCourier({id: x.id})">
    <i class="fa fa-pencil"></i>
</button>

到:

<a href="/editCourier/id" />

并在控制器中,使用Angular的RouteParams获取Id。 请参阅此link

答案 1 :(得分:0)

您可以直接将id传递给Function editCourier(x.id)

 <button class="btn btn-primary btn-xs" ng-click="editCourier(x.id)">
    <i class="fa fa-pencil"></i>
  </button>

并在控制器中

  $scope.editCourier = function(id, index) {
       console.log(id);//Check here whether the click id is coming or not
}

答案 2 :(得分:0)

将我的HTML更改为

<button class="btn btn-primary btn-xs" ng-click="editCourier(index)">
                                        <i class="fa fa-pencil"></i>
                                    </button>

我更改了控制器功能。

$scope.editCourier = function(index) {
        $.ajax({
            'type': "POST",
            'async': false,
            'global': false,
            'url':'settings/editCourier',
            'data': 'id='+ $stateParams.id, 
            'dataType': "json",
            'success': function (data) { 
                $scope.formData = data[0];   
                $scope.couriers.splice(index, 1);
                $state.go('statename', {id: $stateParams.id}, {reload: true});             
            }
        });     
    }