2016-01-14 2 views
3

У меня есть сомнения о том, как обратиться моделями контроллеров в угловом использовании this.modelthis.model внутри директивы в угловых

Если у меня есть следующий контроллер:

angular 
.module("myApp", []) 
.controller('myCtrl', myCtrl) 
.directive('myDirective', myDirective); 

function myCtrl(){ 
    var vm = this; 

    //model 
    vm.myModel = "whatever"; 
} 

//my directive  
function myDirective(){ 
    return { 
    restrict: 'A', 
    link: function(scope, element, attrs) { 
     // here! 
     // how can I acces to the myModel model if it was defined with 'this' 
    } 
    } 
} 

Если моя модель была как это:

$scope.myModel 

я мог читать его с scope.myModel внутри myDirective, но "это (vm.myModel)", как я могу добиться этого?

ответ

1

Он передается как параметр области.

scope.myModel 

В случае синтаксиса vm, становится еще один слой на области действия В параметре. Например:

scope.vm.myModel 
1

Вы можете получить любой родительский контроллер директивы, используя

angular.element.parent().controller(); 

Вот рабочая скрипку.

http://jsfiddle.net/HB7LU/22226/

Используя этот код, если я изменил виртуальную машину в контроллере к чему-то еще, мне не нужно, чтобы изменить код Директивы.

Смежные вопросы