2016-07-22 5 views
0

Поэтому мне нужно вызвать функцию после шаблона загрузки HTML в директиве ..Вызов функции после загрузки

app.directive('myDivModal',function() { 
    var controller = ['$scope',function ($scope) { 
     //some code here.. 
    }]; 
    return { 
     restrict: "E", 
     scope: { 
      myprops: '=props' 
     }, 
     controller: controller, 
     templateUrl: 'modal.html', 
     link:function (scope, elem, attr,controller,transcludeFn) { 
      $('#firstId').datepicker({ 
       format: 'dd-mm-yyyy' 
      }); 
     } 
    }  
}); 

и

<input type="text" id="{{myprops.id}}" readonly="readonly" ng-model="start" > 
<input type="text" id="{{myprops.id}}" readonly="readonly" ng-model="end" > 

#firstId Мне нужно, что связываться с id="{{myprops.id}}Dp1" .. но функция началось до HTML. Я стараюсь почти все, как пост, компиляцию и т. д., но ничто не помогает мне.

ответ

0

Использование $ Функция тайм-аут в ссылке:

// You might need this timeout to be sure it runs after DOM render. 
$timeout(function() { 
    //your code 
    $('#firstId').datepicker({ 
     format: 'dd-mm-yyyy' 
    }); 
}, 0,false); 

И это, возможно, дублирует вопрос Execute Javascript after directive template has been loaded

+0

, так как он находится в функции связи за $ таймаут ненужным, поскольку DOM уже создана. Я считаю, что селектор не возвращает никаких элементов. –

+0

Должно быть, потому что $ timeout() помещает работу в собственную очередь событий и, следовательно, будет обслуживаться после того, как браузер отобразит – adielhercules

+0

Спасибо youuuuuuu !!!!!!!! Он работает с тайм-аутом, просто спасибо – FreakProgrammer

0

Я думаю @ DB.Null правильно попробуйте добавить свойство класса для ваших HTML элементов, а затем применяются:

$('.startDate').datepicker({ 
    format: 'dd-mm-yyyy' 
}); 
0

Update контроллер:

var controller = ['$scope',function ($scope) { 

    ... 
    $scope.$on('my-tpl-ready', function() { 

    $('#firstId').datepicker({ 
     format: 'dd-mm-yyyy' 
    });  

    }); 

}]; 

добавить Также это в шаблон:

<div ... ng-init="$emit('my-tpl-ready')"> 
    ... 
</div> 
Смежные вопросы