在另一个指令内调用指令函数

时间:2015-08-22 20:57:53

标签: javascript angularjs angularjs-directive angularjs-scope polymer

我想创建一个日历,所以我希望有一个带有multipe Event指令的Calender指令,而日历应该管理它们。我并不熟悉角度,所以我觉得我做错了。在聚合物中应该有类似的东西。

实际上我处理指令有点像对象,但我想我不能称之为这样的方法。有人可以举例说明如何在另一个指令中管理多个指令,或者这是不可能的;

目前我收到的是event.start()不是函数。

plunker

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()

1 个答案:

答案 0 :(得分:0)

您可以尝试使用transclude选项,它允许您在指令内部工作并将内容放在另一个指令中。

相关问题