1

AngularUI のカレンダー ラッパーをアプリケーションに統合しようとしていますが、カレンダーの初期化は正常に機能します。ただし、ここからカレンダー メソッドを呼び出す方法がわかりません。これが私のコントローラーコードです:

$scope.events = [];
$scope.calendarOptions = {
    calendar: {
        header: {
            left: 'prev,next today',
            center: 'title',
            right: 'month,agendaWeek,agendaDay'
        },
        defaultView: 'agendaWeek',
        selectable: true,
        selectHelper: true,
        select: function(start, end, allDay) {
            var title = prompt('Event Title:');
            if (title) {
                $scope.$apply(function(){
                    $scope.events.push({
                        title: title,
                        start: start,
                        end: end,
                        allDay: allDay
                    });
                });

            }
            // should call 'unselect' method here
        },
        editable: true
    }
};
$scope.eventSources = [$scope.events];

カレンダーからメソッドを呼び出すにはどうすればよいですか? コントローラーのスコープ内にありません。スコープ オブジェクト内のあらゆる場所をチェックしました。

uiCalendar ディレクティブ コード内でこれを見つけました。

 scope: {ngModel:'=',config:'='},

私の理解では、これはカレンダーが分離されたスコープで作成されていることを意味します。したがって、カレンダーでメソッドを呼び出すことはできません。ただし、デモでは次の行を見つけました。

 /* Change View */
$scope.changeView = function(view) {
    $scope.myCalendar.fullCalendar('changeView',view);
};

では、デモではカレンダーのメソッドを呼び出すことができますが、私はできませんか? これも再現できません。

問題を理解または修正するための助けをいただければ幸いです。

4

1 に答える 1

1

さて、ソースコードではかなり明白でしたが、一見しただけではわかりませんでした。関連するスニペットは次のとおりです。

if(attrs.calendar){
    scope.calendar = scope.$parent[attrs.calendar] = elm.html('');
}else{
    scope.calendar = elm.html('');
}

これにより、カレンダー ディレクティブを HTML に記述するときに宣言した名前で、カレンダーが親スコープにバインドされます。例えば

<div ui-calendar="options" calendar="my-calendar-name" ng-model="events"></div>

これは、コントローラーのスコープ内でカレンダーのメソッドを呼び出すことができることを意味します。まだ考えてもいなかった機能実装でした!このスクリプトにはいくつかのドキュメントが必要です。

于 2013-05-14T00:57:14.100 に答える