AngularJS 在 div 中使用 ng-click

AngularJS using ng-click inside a div

我无法让 ng-click 工作,我试图在 div 中将 url 传递给它,因此当用户单击它时它会转到下一页,但是当我点击 div 时,我可以看到它是正确的 link 但它没有转到下一页,而是 returns 到主页。

<div ng-repeat="contatosCliente in contatos" class="conteudo" type="item-link" ng-click="urlcontato('#/app/contatos/' + contatosCliente.contatos_id)">
                     {{contatosCliente.nome}}
                    <i class="ion-ios-arrow-right" style="border: none; padding-right: 11px"></i>

                </div>

我的控制器:

 $scope.urlcontato = function ( path ) {
            $location.path( path );
        };

$location.path 应该只用正斜杠调用,没有那个散列。

https://docs.angularjs.org/api/ng/service/$location

<div ng-repeat="contatosCliente in contatos" class="conteudo" type="item-link" ng-click="urlcontato('/app/contatos/' + contatosCliente.contatos_id)">

并且您应该检查以确保您的视图已绑定到您的控制器。在您的函数中添加一些日志记录,或使用调试器语句,以确保正在调用 urlcontato

首先,路径应始终以正斜杠 (/) 开头,否则会自动附加。删除 # 它应该可以工作

<div ng-repeat="contatosCliente in contatos" class="conteudo" type="item-link" ng-click="urlcontato('/app/contatos/' + contatosCliente.contatos_id)">
                 {{contatosCliente.nome}}
                <i class="ion-ios-arrow-right" style="border: none; padding-right: 11px"></i>

            </div>

由于 ionic 框架使用 ui-router 进行路由,因此您应该这样做:

$scope.urlcontato = function ( state ) {    
    $state.go(state);
}

当然,您必须在控制器(或指令)中注入 $state 服务。

对于 html 代码中的默认值 link,您应该使用

<a ui-sref="yourstate">Linktitle</a>

有关详细信息,请参阅 this Navigation and Routing Article