Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 12.02.2015, 13:17
Интересующийся
Отправить личное сообщение для OlegUP Посмотреть профиль Найти все сообщения от OlegUP
 
Регистрация: 12.02.2015
Сообщений: 20

да обход с удалением и инииализацией нулем я для теста сделал, в учебных пособиях говорится что достаточно сделать
arr = [] или arr.lenth = 0

Вот код одного из виджетов:
function ObjectWidget(block, options) {
        Widget.apply(this, [block, options]);
        var self = this;

        self.options.widget = self.block.attr('widget');
        self.obj_name = self.block.find('.obj_name').find('span').text();
        self.options.obj_id = self.block.attr('obj_id');

        self.block.find(".obj_name").click(function(){self.changeName(this)});
        self.block.find(".delete").click(function(){self.del()});
        self.block.find(".close").click(function(){self.close()});
        self.block.find(".add_field").click(function(){self.add()});

        var mfHeight = parseInt($('#container').css('height'));
        var hHeight  = parseInt(self.block.find('.obj_w_header').css('height'));
        self.block.find('.scroll-pane').css('height', mfHeight-hHeight-15+'px');
        self.block.find('.scroll-pane').jScrollPane();
    }
    ObjectWidget.prototype.del = function () {
        this.options.action = "delete";
        var result_container = $("#main_frame");
        this.render(result_container);
    };
Ответить с цитированием
  #22 (permalink)  
Старый 12.02.2015, 13:21
Интересующийся
Отправить личное сообщение для OlegUP Посмотреть профиль Найти все сообщения от OlegUP
 
Регистрация: 12.02.2015
Сообщений: 20

По сути, если удалить объект из массива, должен удалиться и обработчик, или объект не удаляется из за того что ссылка повешена на элементе? Но ведь я заменяю сам элемент либо через replaceWith(ajax_result) либо через html(ajax_result) потом запускаю менеджер

Последний раз редактировалось OlegUP, 12.02.2015 в 13:31.
Ответить с цитированием
  #23 (permalink)  
Старый 12.02.2015, 13:33
Профессор
Отправить личное сообщение для caetus Посмотреть профиль Найти все сообщения от caetus
 
Регистрация: 23.09.2014
Сообщений: 197

ты вешаешь на елемент DOM вот удаляй его или обработчик с него !

я Jquery к счастью плохо знаю но мне кажется что много у тебя обработчиков !
почитай о всплытие !

self.block.find(".obj_name").click(function(){self .changeName(this)});
self.block.find(".delete").click(function(){self.d el()});
self.block.find(".close").click(function(){self.cl ose()});
self.block.find(".add_field").click(function(){sel f.add()});
Ответить с цитированием
  #24 (permalink)  
Старый 12.02.2015, 13:35
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Цитата:
объект не удаляется из за того что ссылка повешена на элементе?
Аха.

Цитата:
Но ведь я заменяю сам элемент либо через replaceWith(ajax_result) либо через html(ajax_result) потом запускаю менеджер
Криво, значит, заменяешь. Небось, как-то так?
var ajax_result = $.getJSON("./widgets.json");
$(".widgets").replaceWith(ajax_result);

Цитата:
я Jquery к счастью плохо знаю но мне кажется что много у тебя обработчиков
Не знать серьезно облегчающие жизнь библиотеки можно только к несчастью.

Цитата:
почитай о всплытие !
При чем тут всплытие?

Последний раз редактировалось Erolast, 12.02.2015 в 13:45.
Ответить с цитированием
  #25 (permalink)  
Старый 12.02.2015, 13:48
Интересующийся
Отправить личное сообщение для OlegUP Посмотреть профиль Найти все сообщения от OlegUP
 
Регистрация: 12.02.2015
Сообщений: 20

я не говорю что я ООП мастер и js ниндзя, даже тут javascript.ru корявые статьи про наследование. Проверил это на своем опыте.
Ответить с цитированием
  #26 (permalink)  
Старый 12.02.2015, 13:50
Профессор
Отправить личное сообщение для caetus Посмотреть профиль Найти все сообщения от caetus
 
Регистрация: 23.09.2014
Сообщений: 197

вешаешь одно события и можно легко управлять хоть 100 виджетами !
Ответить с цитированием
  #27 (permalink)  
Старый 12.02.2015, 13:52
Интересующийся
Отправить личное сообщение для OlegUP Посмотреть профиль Найти все сообщения от OlegUP
 
Регистрация: 12.02.2015
Сообщений: 20

базовый класс:
function Widget(block, options) {
    this.options = eval(options);
    this.block = $(block);
    var self = this;
//    this.options.widget = this.block.attr('widget');

    this.render = function(result_container) {
        if (result_container == undefined) result_container = this.block;
        $.ajax({
            url: "/widget/",
            type: "GET",
            data: {"options": JSON.stringify(this.options) },
            success: function (result) {
                $(result_container).empty().html(result); // empty добавил только что и тестю
                manager.run();
            }
        });
    };

    this.query = function(request_handler) {
    $.ajax({
        url: "/widget/",
        type: "GET",
        data: {"options": JSON.stringify(this.options) },
        success: function (result) {
            request_handler(result);
        }
        });
    };

    this.replaceRender = function() {
        $.ajax({
        url: "/widget/",
        type: "GET",
        data: {"options": JSON.stringify(this.options) },
        success: function (result) {
            self.block.replaceWith(result);
            manager.run()
        }
        });
    };
}
Ответить с цитированием
  #28 (permalink)  
Старый 12.02.2015, 13:52
Профессор
Отправить личное сообщение для caetus Посмотреть профиль Найти все сообщения от caetus
 
Регистрация: 23.09.2014
Сообщений: 197

что у тебя виджет делает ? (для интереса )
Ответить с цитированием
  #29 (permalink)  
Старый 12.02.2015, 13:58
Интересующийся
Отправить личное сообщение для OlegUP Посмотреть профиль Найти все сообщения от OlegUP
 
Регистрация: 12.02.2015
Сообщений: 20

Сообщение от caetus Посмотреть сообщение
что у тебя виджет делает ? (для интереса )
Widget - базовый класс от него наследуются различные классы - списковые(с удалением, добавлением, поиском) загрузка файлов, формирование привязок, виджет текстового поля, скорее всего в следующей версии перейду таки на backbone, спасибо Erolast за совет, хотел попробовать angular, но не стал, времени на то чтобы учить его не было
Ответить с цитированием
  #30 (permalink)  
Старый 12.02.2015, 14:00
Профессор
Отправить личное сообщение для caetus Посмотреть профиль Найти все сообщения от caetus
 
Регистрация: 23.09.2014
Сообщений: 197

ясно!!
Erolast я не так понял ))) сори за навязывания ошибочного мнения ))
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Еще раз о перелистывании digital_sword jQuery 14 27.05.2010 22:20
глюк форума Gvozd Сайт Javascript.ru 11 18.03.2009 14:37