在ui中调用一个方法-sref in angularJS

Call a method in ui-sref in angularJS

我在 ngGrid 中有以下代码:

cellTemplate: '<div class="padding-t-5 padding-l-5"><a ui-sref="editCamera({id:row.entity.id})" ><i class="fa fa-edit margin-r-10"></i></a>\n\
                    <button ng-click="confirmClick() && grid.appScope.deleteRow(row)" confirm-click><i class="fa fa-trash"></i></button></div>'

我想知道如何将ui-sref中提到的editCamera方法定义到控制器中。

如果我添加 ng-click 那么我将如何传递 id(通过 ui-sref)

我尝试使用 $scope.editCamera 来定义,但确实有效。

****更新******

我需要的是在同一个控制器中执行添加和编辑操作,为此我需要一种不同的方法来进行编辑操作。

使用 ng-click 代替 ui-sref

HTML

<div class="padding-t-5 padding-l-5">
  <a ng-click="editCamera(row.entity.id)">
    <i class="fa fa-edit margin-r-10"></i>
  </a>
  <button ng-click="confirmClick() && grid.appScope.deleteRow(row)" confirm-click>
    <i class="fa fa-trash"></i>
  </button>
</div>

JS

$scope.editCamera = function(id) {
  $state.go('INSERT-EDIT-CAMERA-STATE-NAME-HERE', {id: id});
}

最后的说明 - 从语义上讲,现在我们已经杀死了 ui-sref,这反过来又杀死了它生成的 href,最好将元素更改为按钮或锚标记以外的其他内容。但我把语义留给你。

ui-sref 会将 editCamera() 视为 angular 路由的状态,因为编译时它会转换为 ng-href 。因此,如果您在控制器中定义 editCamera(),它不会作为路由状态被调用,并且参数会传递给它,即 ID 将充当路由参数。要调用函数,您需要改用 ng-click 。

或者如果您要进行路由而不是使用参数 ID 创建 editCamera 作为状态并使用 ui-sref 。

ui-sref 是 UI-路由器使用的状态引用。这不是调用控制器方法,而是用于路由到另一个页面。