AngularJS中的孤立结果

时间:2016-07-21 08:47:26

标签: javascript angularjs angularjs-scope isolate-scope

我想生成一系列调用函数的按钮,我想只返回调用者按钮div。

现在我有:

  app.directive("phone", function () {
      return {
        scope: {
          dial: "&"
        },

       template: '<input type="text" ng-model="value"> <div class="button" ng-click="dial({message:value})">prova!   </div> {{ $parent.pippo }}',
        };
    });
<div ng-app="phoneApp">
  <div ng-controller="AppCtrl">
      <div phone dial="callHome(message)"> </div><br><br>

          $scope.callHome = function (message) {
            $scope.pippo = "casa";
          };

如何隔离对来电按钮的响应?

1 个答案:

答案 0 :(得分:0)

为您的指令指定controllercontrollerAs,这样您就可以使用单独的 contex 为每个按钮创建新指令:

app.directive("phone", function () {
  function PhoneDirectiveCtrl ($scope) {
    this.$scope = $scope;
  }
  
  PhoneDirectiveCtrl.prototype.dial = function () {
    this.pippo = this.message + 'casa';
  }
  
  var tempalte = '<input type="text" ng-model="value"> <div class="button" ng-click="ctrl.dial()">prova!</div> {{ ctrl.pippo }}';
  
  return {
    controller: PhoneDirectiveCtrl,
    controllerAs: 'ctrl',
    scope: {
      message: '@'
    },
    template: template
  }
});

当您必须创建相同$scope的少数实例时,请勿使用父级的directive

P.S。不要仅在$parent控制器上定义与指令相关的方法。您应该使用您controller

调用的专用方法创建专用directive