2014-12-24 3 views
0

Я пытаюсь выяснить, как удалить директиву при щелчке поля ввода, созданного этой директивой, когда пользователь ничего не вводит в поле. Сейчас директива работает, как и планировалось, за исключением случаев, когда ничего не вводится. В принципе, если ни одна введенная директива не удалена и/или некоторая функция не вызвана. Я просто хочу удалить шаблон директивы. Благодарю.AngularJS удалить директиву на clickaway

DocumentManager.directive('clickAway', function($compile,$document, $location){ 

return { 
replace: true, 
scope: true, 
template:'<input type="text" class="form-control" ng-model="item.name" placeholder="Enter name">', 
restrict: 'AE', 
link: function(scope, elem, attr, ctrl) { 
    elem.bind('click', function(e) { 

    e.stopPropagation(); 
    }); 
    $document.bind('click', function() { 
    if(scope.item == null){  
     return; 
    }; 
    scope.createItem(scope.item); 
    scope.item= null; }); 
} 
}}); 
+1

это то, что используется 'ng-if'. – cgTag

ответ

1

Вы почти находитесь. Вам просто нужно добавить elem.remove();

$document.bind('click', function() { 
    if(scope.item == null){ 
     elem.remove();  
     return; 
    }; 
    scope.createItem(scope.item); 
    scope.item = null; }); 
} 

Только уведомление, однако, что, как вы реализовали его, если item.name = "" (устанавливается снаружи), то первый щелчок не будет удалить его, и будет на самом деле createItem().

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