簡體   English   中英

如何從2級指令訪問控制器范圍

[英]how to access controller scope from a 2 level directive

我正在嘗試構建盡可能多的通用代碼。

因此,我有2個指令,一個指令嵌套在另一個指令中,而我希望嵌套指令在主控制器$ scope上調用方法。

但是相反,它要求使用父指令上的方法,我想知道如何針對主控制器范圍而不是父指令執行方法。

這是我的問題的示例代碼我的HTML看起來應該像這樣:

<div ng-controller='mainctrl'>
  <div validator>
    <div datepicker select-event='datepickerSelected()'/>
  </div>
</div>

使用Javascript:

var app = angular.module("app",[]);

var mainctrl = function($scope){
  $scope.datepickerSelected = function(){
    //I WANT TO ACCESS THIS METHOD
  }
}

app.directive("validator",function(){
  return {
    scope : {
      //the datepicker directive requests a datepickerSelected() method on this scope
      //while I want it to access the mainctrl scope
    }
    link: function(scope){
      //some code
    }
  }
});

app.directive("datepicker", function(){
  return{
    scope: {
      selectEvent: '&'
    }
    link: function(scope, elem){
      //example code
      $(elem).click(scope.selectEvent); //want this to access mainctrl instead validator directive
    }
  }
});

只需刪除驗證程序指令的scope屬性,從而消除其孤立的范圍。 這意味着驗證器將具有與嵌套在您的控制器中的作用域相同的作用域,而datepicker將使用該作用域。

如果您想要兩個都有獨立的作用域(聽起來並不像您一樣),則另一個選擇是將函數傳遞給“驗證者”的作用域。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM