加载后调用函数

时间:2016-07-22 15:16:10

标签: javascript html angularjs

所以我需要在指令中加载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之前启动我几乎尝试了所有内容,比如post,compile post等等,但没有任何工作可以帮助我。

3 个答案:

答案 0 :(得分:0)

在链接中使用$ timeout函数:

// 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

的重复问题

答案 1 :(得分:0)

我认为@ DB.Null是正确的尝试将类属性添加到您的html元素然后应用:

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

答案 2 :(得分:0)

更新您的控制器:

for y in proxylist:
    proxylist = y.split('\n') # avoid ambuguity, use another name

同时将其添加到您的模板中:

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

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

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

  });

}];