2016-07-14 107 views
1

我有一個簡單的指令:隔離指令結合於母公司的功能

let directive = { 
    restrict: 'EA', 
    templateUrl: 'app/components/video-player/video-player.html', 
    scope: { 
     someFunction:'=' 
    }, 
    ... 
} 

template: 
<div class="video" ng-click="vm.someFunction(vm.someId)"></div> 

directive: 
<video-player some-function="main.ctaClick"></video-player> //controllerAs main 

export class MainController { 
    ... 
    someFunction(){ 
     // How do I get the correct this here without using $parent? 
     let context = this.scope.$parent.main; 
    } 
} 

基本上我想知道是否有使用父範圍的情況下一種方式,當雙向綁定這樣的功能?這是正確的方法嗎?

回答

1

孤立的指令是從它的父母,因此名稱分離。如果父母應該向指令提供某些內容,則應將其作爲屬性進行傳遞。

可以使用繼承範圍and use bindToController binding instead替換隔離範圍。但是,這可能表明一個設計缺陷。

這是正確的方法嗎?