2012-11-06 35 views
3

(原諒我,如果我得到一些名詞錯的,我是新來的角。)通話功能已經完全編譯/渲染

我有一個指令,它看起來是這樣的:

return { 
    template: "<p>{{size}}</p><div ng-transclude></div>", 
    link: function(scope, element) { 
     scope.size = element.outerWidth(); 
    } 
};  

我想要的scope.size此設置ng-transclude解決後才能生效。但是,當調用link函數時,情況並非如此。在其內容中有ng-transclude的子碼後,是否有某種方法可以運行代碼?我是否必須在DOM中偵聽加載事件?

回答

3

$ timeout()使本地事件隊列工作,因此它將在瀏覽器呈現後提供服務。所以試試這個:

return { 
    transclude: true, 
    template: "<p>{{size}}</p><div ng-transclude></div>", 
    link: function(scope, element) { 
     //scope.size = element.outerWidth(); 
     $timeout(function() { 
      scope.size = element.outerWidth(); 
     },0) 

    } 
};