2013-09-13 3 views
0

Мне нужно использовать область выделения в директиве; Я пытаюсь прочитать значение модели, указанной в атрибуте. Так что моя директива используется так:AngularJS - Как узнать значение модели, определенной в области выделения?

<div mydirective="" mydirective-data="MyJson" /> 

В контроллере, я присвоить значение $scope.MyJson. Моя директива должна забрать его, но не делает.

app.directive('mydirective', function() { 
    return { 
    restrict: 'A', 
    scope: { 
     data: '&mydirectiveData', 
    }, 
    link: function(scope, element, attrs) { 
     console.log(scope.data); 
     } 
    } 
    } 
); 

Обратите внимание, что мне нужно использовать область изоляции. Я также создал JSFiddle с этой проблемой. (Не забудьте открыть консоль)

Я ожидаю увидеть значение MyJson, но вместо этого ничего не вижу.

ответ

4

Замените & в пределах с =, и было бы получить искомый объект. Если вы используете &, используйте scope.data()

+0

Я изменил '&' на '=' в [этой скрипке] (http://jsfiddle.net/XsAbT/4/), но ничего не записывается на консоль. Я что-то пропустил? – Mendhak

+0

@ Shah, да, вам не хватало '', [скрипка] (http://jsfiddle.net/XsAbT/6/) –

+0

@ Да, это проблема скрипки, см. Это один [plunker] (http://plnkr.co/edit/smQXjT) работает – Daiwei

1

Я хотел бы написать мою директиву так:

app.directive('mydirective', function() { 
    return { 
    restrict: 'A', 
    scope: { 
     mydirectiveData: '=' 
    }, 
    link: function(scope, element, attrs) { 
     console.log(scope.mydirectiveData); 
     } 
    } 
    } 
); 
+0

Я попробовал это - см. Этот [скрипка] (http://jsfiddle.net/XsAbT/3/) - но консоль ничего не записывает. – Mendhak

+0

@ Да, вы не завершили процесс настройки. Вот обновленная [скрипка] (http://jsfiddle.net/XsAbT/5/) – kubuntu

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