Adicionar parâmetro à function ng-click dentro do ng-repeat parece não funcionar

Eu tenho um loop simples com ng-repeat assim:

 
  • {{task.name}}

  • Existe uma function no controlador $scope.removeTask(taskID) .

    Até onde sei, o Angular primeiro renderizará a view e replaceá o {{task.id}} interpolado por um número, e então, no evento click, avaliará ng-click string ng-click .

    Neste caso, o ng-click obtém totalmente o que é esperado, por exemplo: ng-click="removeTask(5)". No entanto … não está fazendo nada.

    É claro que posso escrever um código para obter task.id partir da matriz $tasks ou até mesmo do DOM, mas isso não parece o caminho Angular.

    Então, como alguém pode adicionar conteúdo dynamic à diretiva ng-click dentro de um loop ng-repeat ?

    Ao invés de

      

    faça isso:

      

    Por favor, veja este violino:

    http://jsfiddle.net/JSWorld/Hp4W7/34/

    Uma coisa que realmente me desligou, foi quando eu inspecionei este html no navegador, em vez de vê-lo expandido para algo como:

      

    Eu vi:

      

    No entanto, este último funciona!

    Isto é porque você está no “Angular World”, quando dentro do ng-click = “” Angular tudo pronto sabe sobre task.id como você está dentro do seu modelo. Não há necessidade de usar binding de dados, como em {{}}.

    Além disso, se você quiser passar o próprio object de tarefa, poderá gostar:

      

    Também vale a pena notar, para as pessoas que acham isso em suas pesquisas, é isso …

     
    {{ button.label }}
    {{ button.description }}

    Anote o valor de ng-click . O parâmetro passado para goTo() é uma cadeia de caracteres de uma propriedade do object de binding (o button ), mas não está entre aspas. Parece que o AngularJS lida com isso para nós. Eu fiquei preso por alguns minutos.

    isso funciona. obrigado. Eu estou injetando html personalizado e compilá-lo usando angular no controlador.

      var tableContent= '
    Search:
    ' +'
    ' + '
    Customer ID
    ' + '
    {{c.CustomerId}}
    '; $timeout(function () { var linkingFunction = $compile(tableContent); var elem = linkingFunction($scope); // You can then use the DOM element like normal. jQuery(tablePanel).append(elem); console.log("timeout"); },100);

    As respostas acima são excelentes. Você pode ver o seguinte exemplo de código completo para que você possa saber exatamente como usar

      var app = angular.module('hyperCrudApp', []); app.controller('usersCtrl', function($scope, $http) { $http.get("https://jsonplaceholder.typicode.com/users").then(function (response) { console.log(response.data) $scope.users = response.data; $scope.setKey = function (userId){ alert(userId) if(localStorage){ localStorage.setItem("userId", userId) } else { alert("No support of localStorage") return } }//function closed }); }); 
      #header{ color: green; font-weight: bold; } 
         HyperCrud            

    Users

    Image - {{user.name}}

    {{user.name}}

    {{user.email}}

    +91 {{user.phone}}

    {{user.address.city}}

    HTML:

     
    ng-click="connectDevice(scannedDevice.id)" altSrc="{{'./assets/img/PlaceHolder/user_place_holder.png'}}" onerror="this.src = $(this).attr('altSrc')">

    Java Script:

      //Global Variables var ANGULAR_APP = angular.module('TestApp',[]); ANGULAR_APP .controller('TestCtrl',['$scope', function($scope) { //Variables $scope.ScanResult = []; //Pass Parameter $scope.connectDevice = function(deviceID) { alert("Connecting : "+deviceID ); }; }]); 

    Aqui está a repetição ng com a function ng click e para acrescentar com slider

        
    checkbox1

    {{emps.id}}

    {{emps.name}}

    {{emps.age}}