Angular Direktive ng-click Funktioniert Nicht

Plunker

Ich habe einen externen controller, enthält eine Richtlinie in seinem Blick. Die Richtlinie wird eine Liste von Punkten und erzeugt links, wo Sie wählen können jedes. Richtig setzt der HTML-Code in der link-Funktion, aber die links' ng-klicken Sie auf Aktionen nicht funktionieren.

Irgendwelche Ideen? 🙂

Code für die Nicht-Plunkering

HTML

<!DOCTYPE html>
<html>

  <head><link href="//netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined.min.css" rel="stylesheet">
        <script src="http://code.jquery.com/jquery-2.0.3.min.js"></script>
        <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.6/angular.min.js"></script>
    <script src="script.js"></script>
  </head>

  <body ng-app="app">
    <div ng-controller="widget">
      <process stages="production" at="productionAt"></process>
    </div>
  </body>

</html>

JS

angular.module('app', ['app.directives', 'app.controllers']);

angular.module('app.controllers', [])
 .controller('widget', function($scope) {
    var selectStage = function () {
      alert(this.label + " selected.");
      $scope.processAt = this;
    }

    $scope.production = [
        {label: "Starting", select: selectStage}
      , {label: "Fermenting", select: selectStage}
      , {label: "Pouring",     select: selectStage}
      , {label: "Beer!",  select: selectStage}
    ];

    $scope.productionAt = $scope.production[0];
 });

angular.module('app.directives', [])
 .directive('process', function() {
    return {
        restrict: 'E'
      , replace: true
      , template: '<ol class="nav nav-pills"></ol>'
      , scope: {
            stages: "="
          , at: "="
        }
      , link: function postLink(scope, element, attrs) {
          for (var i = 0; i < scope.stages.length; i++) {
            var $stage = $('<li ng-click="stages['+i+'].select()"><a>'+scope.stages[i].label+'</a></li>');
            if (scope.at == scope.stages[i]) {
              $stage.addClass('active');
            }
            $(element).append($stage);
          }
        }
    }
  });
Versuchen, erstellen Sie eine Funktion zurückgibt, die der ng-klicken Sie auf Wert. Vielleicht hat es etwas zu tun mit javascript-closure (mennovanslooten.nl/blog/post/62)

InformationsquelleAutor jtfairbank | 2013-08-03

Schreibe einen Kommentar