2012-08-13 5 views
0

보기에서 blockView 인스턴스를 만들고 모델을 매개 변수로 전달하고 있습니다. 하지만 그것을 실행하면 오류가 발생합니다 "TypeError : 정의되지 않은 개체로 변환 할 수 없습니다". 이 오류를 추적하려고했지만 얻을 수 없습니다. 누구나 plz. Plz은이처럼보기를 인스턴스화백본보기 문제

var DCSSPACE = DCSSPACE || {}; 
    $(document).ready(function(){ 
     WorkSpace = new draw2d.Workflow("canvasdiv"); 
     collection = new DCSSPACE.collection.collection(); 
     view = new DCSSPACE.view.view({WorkSpace : WorkSpace, collection : collection}); 


    }); 

    DCSSPACE.view = function(){ 
     var uniqueid = 1, blockCounter = 0; 
    var view = Backbone.View.extend({ 
     el : $("#canvasdiv"), 
     views : {}, 

     initialize : function() { 
      console.log("View"); 

      this.collection.bind("add", function(m, temp, data){ 
       console.log(data.evt); 
//Here i am getting error "TypeError: can't convert undefined to object"     
this.views[m.cid] = new blockView({data : data, model : m, id : "view_" + m.cid}); 
       },this); 

      this.collection.bind("remove", function(m){ 
       this.views[m.cid].remove(); 
       delete this.views[m.cid]; 
      }, this); 
      this.render(WorkSpace); 
     }, 
     render : function(WorkSpace) { 
      $("#sidediv").accordion(); 
      this.disableSelection(document.body); 
      var menu = new draw2d.FlowMenu(WorkSpace); 
      WorkSpace.addSelectionListener(menu); 
      var toolwindow = new draw2d.Toolbox(); 
      WorkSpace.setToolWindow(toolwindow); 
      toolwindow.setPosition(0,0); 
      $(".btn").draggable({ 
       helper : "clone", 
       stop : function(event, ui) { 
        var data = { 
         id : this.id, 
         evt : event.originalEvent, 
        }; 
        if(event.originalEvent.pageX >= 220) { 
         var m = new DCSSPACE.model.FunctionBlockModel(); 
         collection.add(m, data); 
        } 
       } 
      }); 

      return this; 
     }, 
     /* Function for deselect body contents */ 
     disableSelection : function(target) { 
      if(typeof target.onselectstart != "undefined")//IE 
       target.onselectstart = function() { 
        return false; 
       } 
      else if(typeof target.style.MozUserSelect != "undefined")//Firefox 
       target.style.MozUserSelect = "none" 
      else//All other 
       target.onmousedown = function() { 
        return false 
       } 
      target.style.cursor = "default" 
     } 
    }); 

    var blockView = Backbone.View.extend({ 
      initialize : function(formalObj){ 
       console.log("block view"); 
       $("#canvasdiv").mousemove(this, this.mousemove).mouseup(this, this.mouseup); 
       this.model.set({id : formalObj.data.id}); 
       console.log(JSON.stringify(collection)); 
       var nodeObj = this.block(formalObj.data); 

      }, 

      block : function(data){ 
       var Obj = new draw2d.node(); 
       var self = this; 
       Obj.onDoubleClick = function(){ 
        self.informationBlock(Obj.getnodeName()); 
       }; 
        Obj.setTitle(collection.get(data.id).get("id")+" "+ (uniqueid++)); 
        Obj.setFooter("#" + (++blockCounter)); 
        WorkSpace.addFigure(Obj, data.evt.pageX - 205, data.evt.pageY); 

    }); 
    return{ 
     view : view, 
     blockView : blockView 
    } 

    }(); 

답변

1

봅니다 아래 코드를 찾을 :

view = new DCSSPACE.view.view({model : WorkSpace, collection : collection}); 

그리고 당신의보기 구현

this.model에 대한 어떤 WorkSpace 참조를 대체합니다.

개인 노트 : 당신은 JS 오류가 발생하는 경우, 일반적으로 찾을 도움이 될 수있는 자세한 내용은이 : 나는 당신이 정리하고 코드 :
개인 주 2을 구성하는 시도에서 일해야한다고 생각 예를 들어 정확한 코드 줄과 같은 문제

관련 문제