angular bootstrap ui-Registerkarten wählen Sie die option funktioniert nicht

Habe ich überschrieben angular-ui-tabs-Richtlinie, im folgenden ist der plunker her das gleiche http://plnkr.co/edit/VABthzUwp50QpS16Gwuy?p=preview. Jetzt meine Forderung ist, dass, wenn ich wählen Sie eine Registerkarte aus, muss ich die callback-Funktion aufgerufen werden. Ich daher verwendet das Attribut auswählen der Registerkarte der Richtlinie.

<tab title="Tab 1" select="alertMe()" template-url="tab1.html"  active='data.static1'></tab>

In meinem controller, habe ich ein alert in meiner Funktion, howeevr die Funktion scheint nicht zu bekommen, genannt.Hier ist die Richtlinie überschrieben.

    'use strict';

angular.module('ui.bootstrap.tabs', [])
.directive('tabset', function () {
  return {
    restrict: 'E',
    replace: true,
    transclude: true,
    controller: function($scope) {
      $scope.templateUrl = '';
      var tabs = $scope.tabs = [];
      var controller = this;

      this.selectTab = function (tab) {
        angular.forEach(tabs, function (tab) {

          tab.selected = false;
        });
        tab.selected = true;
      };

      this.setTabTemplate = function (templateUrl) {
        $scope.templateUrl = templateUrl;
      }

      this.addTab = function (tab) {
        if (tabs.length == 0) {
          controller.selectTab(tab);
        }

        tabs.push(tab);

      };
    },
    template:
      '<div class="row-fluid">' +
        '<div class="row-fluid">' +
          '<div class="nav nav-tabs" ng-transclude></div>' +
        '</div>' +
        '<div class="row-fluid">' +
          '<ng-include src="templateUrl"></ng-include>' +
        '</div>' +
      '</div>'
  };
})
.directive('tab', ['$parse', function ($parse) {
  return {
    restrict: 'E',
    replace: true,
    require: '^tabset',
    scope: {
      title: '@',
      templateUrl: '@',
      onSelect: '&select'
      //active: '='
    },
    link: function(scope, element, attrs, tabsetController) {
    scope.$parent.$watch($parse(attrs.active), function (value) {

      if (value) {
        tabsetController.selectTab(scope);
      //  scope.onSelect();
      }

    });

      tabsetController.addTab(scope);

      scope.select = function () {
   alert()
        tabsetController.selectTab(scope);
       //scope.onSelect();
      }

      scope.$watch('selected', function () {

        if (scope.selected) {
          scope.onSelect();
          tabsetController.setTabTemplate(scope.templateUrl);
        }
      });

    },
    template:
      '<li ng-class="{active: selected}">' +
        '<a href="" ng-click="select()">{{ title }}</a>' +
      '</li>'
  };
}]);

Gibt es eine Möglichkeit zum Aufruf dieser callback-Methode?

Sie haben geschrieben 13 Fragen, die auf dieser Website und einige haben tragfähige Antworten noch haben Sie nicht gekennzeichnet sind, jede von Ihnen so beantwortet. Bitte nehmen Sie sich die Zeit und markieren Sie Ihre vorherigen Fragen beantwortet, wo es angebracht ist.

InformationsquelleAutor coder | 2014-07-01

Schreibe einen Kommentar