Вопрос

Поэтому у меня есть приложение календаря, где прямо сейчас пользователь выбирает даты начала / конца и нажимает на клику в Calendar. Это заполняет календарь. Однако у меня возникли проблемы, включая новые элементы в объеме. Например, вместо того, чтобы постоянно использовать ту же функцию снова и снова, чтобы рассчитать «дату ячейки» для некоторой ячейки из даты начала, номер недели, номер недели и т. Д., Я хочу хранить дату ячейки один раз в свой объем и позвольте всем остальным использовать это. Как-то я не могу сделать это, несмотря на много попыток. В приведенном ниже jsfiddle вы заметите дни месяца отображения в правом верхнем углу каждой камеры календаря. Однако, если вы измените даты, чтобы сказать месяц предыдущих, дни месяца обновления, но «дата ячейки», которую я отображал в ячейке, не обновляется!

Например, взять "SAT Jul 05 2014". Обновите даты, чтобы начать с 6/1, а далеко правая ячейка по-прежнему «Sat Jul 05 2014», хотя его день месяца отражает 7 июня! Соответствующий код находится в директиве «Callell» и директива «События». На калькуле я установил Celld в виде NG-int= 'Celld= Celldate (Num, Start_dt, $ index)'. Затем в событиях я просто отображаю использование {{Celld}}. Я мог бы получить его на работу, используя Telldate (Num, start_dt, $ index) в событиях, но я действительно не хочу использовать ту же функцию в миллион раз везде. Есть ли способ сохранить дату ячейки в объекте клеток и просто используйте его в охвата детей и обновлять его, когда данные обмениваются? В конце концов я передам дату ячейки к функции, чтобы получить данные событий на эту дату, то события будут повторять их, чтобы отобразить данные событий.

Widdle Link

app.directive("events", function($compile, DateService) {
        return {
            restrict: "A",
            replace: true,
            scope: true,
            template: 
                    "<div>{{celld}}</div>",
            link: function(scope, element, attrs) {
                scope.DateService = DateService;
            }
        }
    });

    //calendar cell 
    app.directive("calcell", function($compile, DateService) {
        return {
            restrict: "A", 
            replace: true, 
            scope: true,
            template: 
                "<td ng-init='celld=cellDate(num, start_dt, $index)' id='{{\"td\" + DateService.getDateInt(cellDate(num, start_dt, $index))}}' \
                        realclass='{{getScopeClass(cellDate(num, start_dt, $index))}}'>\
                    <div>\
                        <a class='CellDay'>{{DateService.getMonthDay(cellDate(num, start_dt, $index))}}</a>\
                    </div>\
                    <br/>\
                    <br/>\
                    <br/>\
                    <br/>\
                    <div events></div>\
                    </div>\
                </td>",
            link: function(scope, element, attrs) {                 
                scope.DateService = DateService;
            }
        }
    }); 
.

Спасибо!

Это было полезно?

Решение

Я смог сделать это работать, поместив мотолет на метку события.Не уверен, что это помогает.

<div events ng-attr-celld='{{cellDate(num, start_dt, $index)}}'></div>
.

Нет необходимости заменять его, а attr - это значение области области.

//replace: true,
...
scope: {celld:'@'}
.

Widdle

А если вы еще не видели - one one ui календарь - может сохранитьтебе некоторое время.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top