2016-04-10 5 views
2

Я изучаю угловой. поэтому застрял в доступе к контроллеру из директивы. $ scope.vojta был заселен в контроллере, который мне нравится печатать из директивы.Угловой Как получить доступ к области контроллера из директив

<div ng-controller="Controller"> 
    <my-customer ></my-customer> 
</div> 

angular.module('docsIsolationExample', []) 
.controller('Controller', ['$scope', function($scope) { 
    //$scope.naomi = { name: 'Naomi', address: '1600 Amphitheatre' }; 
    $scope.vojta = { name: 'Vojta', address: '3456 Somewhere Else' }; 
}]) 
.directive('myCustomer', function() { 
    return { 
    restrict: 'E', 
    /* 
    scope: { 
     customerInfo: '=info' 
    }, 
    */ 
    template: 'Name: {{vojta.name}} Address: {{vojta.address}}' 

    }; 
}); 

нет имени или адреса печатается. не в состоянии понять, где я совершил ошибку. ища какое-то предложение. здесь скрипку https://jsfiddle.net/tridip/3g9yddf5/

+1

Откройте консоль браузера. Ваш код в скрипте имеет синтаксическую ошибку. Это недействительный JavaScript. И вы забыли добавить 'ng-app =" docsIsolationExample "в шаблон. –

ответ

3

Как вы уже customerInfo: '=info' внутри изолированного объема директивы, вы должны передать значение из info атрибута (который является использование в качестве атрибута псевдонима), так что он может поставляться с customerInfo области видимости переменных внутри директивы.

<my-customer info="vojta"></my-customer> 

А затем изменить директиву шаблона для использования customerInfo, прошедшие информацию клиента.

template: 'Name: {{customerInfo.name}} Address: {{customerInfo.address}}' 

Demo Fiddle

+0

Я пытался, но не работал. ничего не печатается. – Mou

+0

@ Вы также можете посмотреть обновленный ответ и скрипку. –

+0

i remove info = "vojta" от моего клиента и комментарий изолированный объем внутри директивы, и он работает. я буду отмечать это как ответ. спасибо – Mou

0

мы можем получить доступ к области контроллера с помощью директив ниже коды без использования изолированного объема.

<div ng-app="docsIsolationExample" ng-controller="Controller"> 
    <my-customer></my-customer> 
</div> 

angular.module('docsIsolationExample', []) 
.controller('Controller', ['$scope', function($scope) { 
    //$scope.naomi = { name: 'Naomi', address: '1600 Amphitheatre' }; 
    $scope.vojta = { name: 'Vojta', address: '3456 Somewhere Else' }; 
}]) 
.directive('myCustomer', function() { 
    return { 
    restrict: 'E', 
    /* 
    scope: { 
     customerInfo: '=info' 
    },*/ 

    template: 'Name: {{vojta.name}} Address: {{vojta.address}}' 

    }; 
}); 

jsfiddle https://jsfiddle.net/tridip/3g9yddf5/3/

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