2013-05-23 11 views
5

Ho una direttiva personalizzata utilizzata per standardizzare gli input di data e formattarli per soddisfare i miei (un po 'strani) requisiti API. Il tag utilizzato per invocarlo è la seguente:AngularJS Argomento della direttiva personalizzata con gli spazi

<date-input date-id="birthDate" date-label="Date Of Birth" ng-model="client.dateOfBirth"></date-input> 

sto ottenendo il seguente errore:

Syntax Error: Token 'Of' is an unexpected token at column 6 of the expression [Date Of Birth] starting at [Of Birth]. 

Quando rimuovo gli spazi (cioè date-label="DateOfBirth" funziona benissimo.)

Come posso consentire spazi negli attributi direttiva?

La direttiva:

directives.directive('dateInput', [function() { 
    var link = function(scope, element, attrs, model) { 
    scope.dateLabel = attrs.dateLabel; 
    scope.dateId = attrs.dateId; 

    var dateObjectPre = moment(scope.dateObject); 
    scope.dateObjectPre = dateObjectPre.format('MMDDYYYY'); 

    scope.update = function() { 
     var dateObject; 
     if(angular.isDefined(scope.dateObjectPre)) { 
     dateObject = moment(scope.dateObjectPre, 'MMDDYYYY'); 
     } 

     if (dateObject && dateObject.isValid()) { 
     scope.dateObject = dateObject.format('YYYY-MM-DD'); 
     } 
     else { 
     scope.dateObject = ''; 
     } 
    }; 
    }; 

    return { 
    restrict: 'E', 
    link: link, 
    templateUrl: '/views/directives/dateInput.html', 
    replace: true, 
    scope: { 
     'dateLabel': '=dateLabel', 
     'dateObject': '=ngModel', 
     'dateShow': '=dateShow', 
     'dateRequired': '=dateRequired', 
     'dateId': '=dateId' 
    } 
    } 
}]); 

risposta

11

Non dovresti utilizzare @ quando passa i valori degli attributi in direttive?

scope: { 
     'dateLabel': '@dateLabel' 
} 
+0

Sì, ha funzionato. Grazie! – jdp

+0

funziona davvero. non ne ero a conoscenza !!! – vinesh

+0

funziona con spazi e/Grazie –

Problemi correlati