Удаление Self из observableArray в KnockoutJS

Я использую Knockoutjs для создания древовидного представления подразделений. Рядом с каждым узлом будет три кнопки :1 )Новый дочерний элемент (применяется к узлу, к которому он примыкает 2 )Удалить (Это удаляет узел, к которому он примыкает, и 3 )Копировать, который копирует узел и все его дочерние элементы и создает новый узел под родителем.

У меня нажата кнопка «Новый», и теперь я работаю над кнопкой «Удалить». Кажется, я не могу заставить его работать, и вместо того, чтобы делать что-то полезное, он просто обновляет всю страницу. Вот код:

Посмотреть:

Skill & Weight Divisions

    Шаблон:

    
    

    Модель просмотра и соответствующая вспомогательная функция:

    function division(id, name, filter, children) {
            this.id = ko.observable(id);
            this.name = ko.observable(name);
            this.filter = ko.observable(filter)
            if(children){
                this.children = ko.observableArray(children);   
            }else{
                this.children = ko.observableArray();   
            }
            this.addDivision = function(){
                this.children.push(new division("", "", ""));   
            }
            this.removeDivision = function(division){
                this.children.remove(division);
            }
            this.copyDivision = function(division){
                this.children.push(division);   
            }
            this.color = randColor();
        };
        function tournamentViewModel(){
            var self= this;
            self.tournamentname = ko.observable('NO NAME YET');
            self.districts = ko.observableArray([new district('Provo',1),new district('Salt Lake City',2),new district('St. George',3)]);
            self.district = ko.observable(self.districts()[0]);
            self.regions = ko.observableArray([new region('Utah',1),new region('Idaho',2)]);
            self.region = ko.observable(self.regions()[0]);
            self.location = ko.observable('WHEREVER YOU WANT');
            self.eventdate = ko.observable('');
            self.startTime = ko.observable('');
            self.image = ko.observable();
            self.flyer = ko.computed(function(){
                var flyerHTML = '

    '+self.tournamentname()+'


    '; flyerHTML += 'District: ' + self.district().districtName + ' Region: ' + self.region().regionName+'

    '; flyerHTML += '

    WHEN: '+self.eventdate()+' '+self.startTime()+'

    '; flyerHTML += '

    WHERE: '+self.location()+'

    '; flyerHTML += ''; return flyerHTML; }, self); self.clearImage = function(){ self.image(''); } self.tournamentID = ko.computed(function(){return 't_'+self.district()+'_'+self.region()+'_'+self.eventdate()}, self); self.pricingStructures = ko.observableArray([new pricingStructure(3,2.99), new pricingStructure(1,1.99)]); self.removePricingStructure = function(pricingStructure){ self.pricingStructures.remove(pricingStructure); } self.addPricingStructure = function(){ self.pricingStructures.push(new pricingStructure("", "")); } self.promoCodes = ko.observableArray(); self.promoTypes = ['%','$']; self.removePromoCode = function(promoCode){ self.promoCodes.remove(promoCode); } self.addPromoCode = function(){ self.promoCodes.push(new promoCode("", "")); } self.divisions = ko.observableArray([new division(1, "Men","",[new division(2,"Gi"), new division(3,"No-Gi")])]); self.addDivision = function(){ self.divisions.push(new division("", "", "")); } } ko.applyBindings(new tournamentViewModel());

    Мой главный вопрос во всем этом заключается в следующем :Есть ли способ получить доступ к родительскому массиву объекта, чтобы удалить этот самый объект из массива? Заранее спасибо за помощь!

    РЕДАКТИРОВАТЬ :Вот jsFiddle:http://jsfiddle.net/eqY7Z/Однако, похоже, он там вообще не работает. Если вы, ребята, не можете это сделать, я включу ссылку на мой сайт, где он размещен, чтобы вы могли его хорошенько изучить.

    5
    задан Frank B 13 July 2012 в 14:54
    поделиться