2015-07-11 3 views
1

Я пытаюсь создать директиву, которая имеет дополнительный «ярлык» для кнопки - если эта метка не поставляется, я хочу это иметь значение по умолчаниюустановки значения по умолчанию для угловой директивы собственности

это это директива

angular.module('myApp') 
    .directive('myButton',function(){ 

    var ctrl = function ($scope) { 
     var controller = this; 

     controller.label = controller.label || 'Save'; 

     console.log("label=",controller.label); 
    }; 

    return { 
     replace: true, 
     restrict: 'E', 

     scope: { 
      label: '@?', 
     }, 

     templateUrl: 'directives/myButton.html', 

     controller: ctrl, 
     controllerAs: 'controller', 
     bindToController: true, 
    }; 
}); 

HTML, в шаблоне это

<md-toolbar> 
    <div class="md-toolbar-tools"> 
     <span flex></span> 
     <md-button class="md-raised">{{controller.label}}</md-button> 
    </div> 
</md-toolbar> 

и я звоню директиву, как этот

<my-button label="fooBar"></my-button> 

это работает - и я вижу этикетку "Foobar" на кнопку, и 'LABEL = Foobar' на консоли

однако, если я не поставить метку

<my-button></my-button> 

Кнопка не имеет ярлыка, но я вижу «наклейка = Сохранить» на консоли

что мне не хватает?

благодарит

+0

, кажется, работает, как ожидается, в этом plunker http://plnkr.co/ edit/R7BmHJ3dGKU5Vz6s5T0H? p = preview Я использовал шаблон вместо templateUrl, но не уверен, как это должно измениться. –

+0

да - это так - я не понимаю, почему он не работает в моем приложении. Я использовал параметр компиляции (см. Принятый ответ), и это действительно работало. Все равно, спасибо за помощь. – jmls

ответ

1

Вы можете использовать метод compile на директиве для достижения желаемого результата, маленький пример

.directive('my-bytton', [ function() { 
    ... 
    compile: function(element, attrs){ 
     if (!attrs.attrOne) { attrs.attrOne = 'default value'; } 
     if (!attrs.attrTwo) { attrs.attrTwo = 'default value2'; } 
    }, 
     ... 
    } 
}); 
+0

, который работал для меня - спасибо большое – jmls

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