簡體   English   中英

另一個指令內部的指令調用函數

[英]Call function of directive inside another directive

我想制作一個日歷,所以我想要一個日歷日歷指令,其中包含multipe Event指令,日歷應該管理這些日歷。 我對角度不那么熟悉,所以我認為我做錯了什么。 在Polymer中,類似的東西應該起作用。

實際上,我處理的指令有點像對象,但我認為我不能調用類似的方法。 有人可以給我一個例子,說明如何在另一個內部管理多個指令,或者如果不可能的話;

目前我正在獲取event.start()不是一個函數。

矮人

angular.module("Calendar").directive('calevent',[function(){
function link(scope,element,attrs){

    scope.start = new Date(scope.start);
    scope.end = new Date(scope.end);
    scope.height = Math.round((((end-start)% 86400000) % 3600000) / 60000)/60*20;
    element[0].querySelector(".event").style.height = height + "px";
    var d = new Date();
    d.setHours(0,0,0,0);
    element[0].querySelector(".event").style.top = (Math.round((((start.getTime()-d.getTime())% 86400000) % 3600000) / 60000)/60*20) + "px";

    function updateProgress(){
        var cur = new Date();
        var diff = (cur.getTime()-start.getTime())/ (end.getTime()-start.getTime())
        diff = (diff < 1) ? diff : height;
        element[0].querySelector(".eventProgress").style.height =  (height*diff) + "px";
    }

    function start(){
        return start;
    }

    function end(){
        return end;
    }
}

return  {
    restrict:'E',
    replace:true,
    scope:{
        text:"=",
        start:"=",
        end:"=",
    },
    templateUrl:'event.html',
    link:link
}
}]);

我想為EventCalendar指令中的特定事件調用updateProgress()

您可以嘗試使用transclude選項,它允許您在偽指令內工作並將內容也放入另一偽指令內。

您應該在父指令中使用controller

如果您訪問指令文檔的末尾,則可以找到有關如何執行此操作的示例。

我將他們的示例保存在此處的Plunk中。

簡而言之,您可以在指令中定義一個控制器,該控制器在$ scope上公開函數。 然后,子指令可以使用它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM