Hey Martin,
You do not need to use `$scope.$parent.title` to get it within the
template, an isolate scope allows us to bind them on local scope of the
directive. I'm still not what problem are you trying to solve. Meanwhile
I've created a demo for you to understand the same (
http://jsfiddle.net/codef0rmer/2sM2w/):
myApp.directive('popup', function() {
return {
restrict: 'E',
scope: {
title: '@',
width: '@'
},
transclude: true,
template: '<div class="popup" ng-class="width">\
<div class="title">{{title}}</div>\
<div class="content" ng-transclude="true"></div>\
</div>'
};
});
On Tuesday, July 29, 2014 2:57:13 PM UTC+5:30, Martin Spierings wrote:
>
> Thanks for your response,
>
> What i'm referring to is how do i fill in the title of popup 1 and popup 2
> differently? I can understand that i could use $scope.$parent.title but i
> would figure that all popups will than have the same title instead of a
> title per popup?
>
> Op dinsdag 29 juli 2014 09:25:18 UTC+2 schreef codef0rmer:
>>
>> Hey Martin,
>>
>> Yes, an isolate scope is a child scope of the parent one. So you can
>> access the parent data via `$scope.$parent` without requiring any
>> controller at all.
>>
>> You could set different title, size, and content for different popups.
>> What data you are referring at?
>>
>> On Tuesday, July 29, 2014 2:21:45 AM UTC+5:30, Martin Spierings wrote:
>>>
>>> Really? But do i need to add parentController as $parent or something to
>>> my code or will it just bind immediately?
>>>
>>> And how do i put data into multiple directives? Say i have 2 popups on
>>> the same page, how do i use certain data in popup 1 and other data in popup
>>> 2?
>>>
>>> Thanks for the reply by the way!
>>>
>>> Op maandag 28 juli 2014 18:50:37 UTC+2 schreef codef0rmer:
>>>>
>>>> Using an isolate scope does not prevent you from accessing parent
>>>> methods/properties, you can always use
>>>>
>>>> scope.$parent.whateverMethod()
>>>>
>>>> within the directive.
>>>>
>>>> On Monday, July 28, 2014 1:24:06 PM UTC+5:30, Martin Spierings wrote:
>>>>>
>>>>> Hi all,
>>>>>
>>>>> I'm trying out something with directives which i haven't been using at
>>>>> all yet (so bear with me). I'm trying to create my custom popup directive
>>>>> for some easy popup dialogs. Now i'd like to keep my functionality from
>>>>> the
>>>>> controller inside the popup as this is easier for me to maintain as i'm
>>>>> gonna need some functions from the controller inside the popup and some
>>>>> values too. Basically i'm retrieving JSON data and use the controller to
>>>>> fill in my view on different locations. I've also got a submit-function
>>>>> in
>>>>> my controller already, so you can see why i'd like to use the transclude
>>>>> on
>>>>> my directive.
>>>>>
>>>>> Now i also want to add a title and a size of the popup to my directive
>>>>> attributes so i can do something like this:
>>>>> <popup title="my title" width="large">
>>>>> The contents of my popup and calling some stuff from the parent
>>>>> scope.
>>>>> </popup>
>>>>>
>>>>>
>>>>> Now in my template i want to use something like this (just quick n
>>>>> dirty):
>>>>> <div class="popup" ng-class="{size: popup-size}">
>>>>> <div class="title">{{title}}</div>
>>>>> <div class="content" ng-transclude="true"></div>
>>>>> </div>
>>>>>
>>>>> Of course i could make a separate directive for every popup i need but
>>>>> that seems like a weird move.
>>>>>
>>>>> Now i know i can make a separate scope for the directive and add the
>>>>> title or size there but then i lose the ability to use my parent scope
>>>>> functions and values. And i'm not really looking to duplicate code or
>>>>> move
>>>>> it all around just for my popups.
>>>>>
>>>>> So does anybody know how to do this?
>>>>> I'm pretty new to directives and i've searched around but couldn't
>>>>> find anything that looks similar to my example of using both transclude
>>>>> with additional scope values. And i also don't have a clue on how to
>>>>> specifically target a certain directive to fill it in from my controller
>>>>> (like popup[1].data ...).
>>>>>
>>>>
--
You received this message because you are subscribed to the Google Groups
"AngularJS" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/angular.
For more options, visit https://groups.google.com/d/optout.