I created directive form controls (tesxt, select, radio). In directive I am 
passing a value that I want access in directive function and if this value 
is not set or empty then set default value from question 
(data._pageAttributes.defaultValue)

http://plnkr.co/edit/Op1QDwUBECAosPUC7r3N?p=preview
facing two problems
1. Not able to access data inside link function in directive
2. not able to set selected value for input and selected control directives.

HTML

<div ng-repeat="que in questions[$state.current.name]">
                        <div ng-if="que.QuestionData._fieldType === 'text'" >
                            <!-- {{answers[que.QuestionData._attributeName]}} 
-->
                            <text-control-dir data="que.QuestionData" 
default="94403"></text-control-dir>
                        </div>  
                        <div ng-if="que.QuestionData._fieldType === 'select'" >
                            <select-control-dir data="que.QuestionData" 
default="2016"></select-control-dir>
                        </div>
                        <div ng-if="que.QuestionData._fieldType === 'radio'" >
                            <radio-control-dir 
data="que.QuestionData"></radio-control-dir>
                        </div>
                        <div ng-if="que.QuestionData._fieldType === 'hidden' && 
que.QuestionData._attributeName != 'CBQ'" >
                            <hidden-control-dir 
data="que.QuestionData"></hidden-control-dir>
                        </div>
                    </div>


controlDirective.js

(function () {
    "use strict";

    angular
            .module("autoQuote")
            .directive('textControlDir', [textControlDir])
            .directive('selectControlDir', [selectControlDir])
            .directive('radioControlDir', [radioControlDir])
            .directive('hiddenControlDir', [hiddenControlDir]);

    function textControlDir()
    {
        return {
            transclude: true,
            restrict: 'E',
            scope: {
                data: '=data',
                default: '=default'
            },
            template: "<div ng-transclude></div><label>{{data._text}} 
</label><input ng-model='answer.PC' type='text' name='{{data._attributeName}}' 
id='{{data._attributeName}}' value='' >"
            ,
            link: function (scope, element, attrs)
            {
                console.log('default');
                console.log(attrs.default);
                if(attrs.default == '')
                {
                    attrs.default = data._pageAttributes.defaultValue;
                }

            }
        };
    }

    function selectControlDir()
    {
        return {
            transclude: true,
            restrict: 'E',
            scope: {
                data: '=data'
            },
            template: "<div ng-transclude></div><label>{{data._text}} 
</label><select type='text' name='{{data._attributeName}}' 
id='{{data._attributeName}}' >\n\
<option ng-repeat='ans in 
data._answerOptions'>{{ans._promptText}}</option></select>"
            ,
            link: function (scope, element, attrs)
            {
                //console.log("scope.data.QuestionData", 
scope.data.QuestionData);
            }
        };
    }

    function radioControlDir()
    {
         return {
            transclude: true,
            restrict: 'E',
            scope: {
                data: '=data'
            },
            template: "<div ng-transclude></div><label>{{data._text}} 
</label><input type='radio' name='{{data._attributeName}}' 
id='{{data._attributeName}}' value='Yes' >\n\
\n\
<input type='radio' name='{{data._attributeName}}' id='{{data._attributeName}}' 
value='No' >\n\
"
            ,
            link: function (scope, element, attrs)
            {
                //console.log("scope.data.QuestionData", 
scope.data.QuestionData);
            }
        };
    }

    function hiddenControlDir()
    {
        return {
            transclude: true,
            restrict: 'E',
            scope: {
                data: '=data'
            },
            template: "<div ng-transclude></div><label>{{data._text}} 
</label><input type='hidden' name='{{data._attributeName}}' 
id='{{data._attributeName}}' value='' >"
            ,
            link: function (scope, element, attrs)
            {
                //console.log(scope.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 https://groups.google.com/group/angular.
For more options, visit https://groups.google.com/d/optout.

Reply via email to