2017-06-29 46 views
1

簡單腳本有問題。我有一個叫做'FeatureFlag'的模型,它是一個參照父類和子類的樹結構。我還有一個叫TreeBuilder的對象,它從FeatureFlag元素列表中生成一棵樹。JavaScript推送到數組後,停止循環執行

這裏是我的模型:

export class FeatureFlag { 
    private _id: number; 
    private _parent: FeatureFlag; 
    private _children: FeatureFlag[] = []; 

    set id(id:number) { 
     this._id = id 
    } 

    set parent(parent:FeatureFlag) { 
     this._parent = parent 
    } 

    get parent() : FeatureFlag { 
     return this._parent 
    } 

    set children(children:FeatureFlag[]) { 
     this._children = children 
    } 

    get children() : FeatureFlag[] { 
     return this._children 
    }      
} 

和問題的方法,建立()在TreeBuilder作爲:

public build() { 
    for(let element of this.data) { //this.data is an array of dict [{node,parent}] 
     let found = this.findNode(element.parent) //searches in tree for node with id 'element.parent' 

     if(found) { //if parent node has been found   
      //found.children.push(element.node) //add current node to its children 
      console.log(found) //print found 
     }   
    } 
} 

當行:

found.children.push(element.node) 

被註釋掉,控制檯打印所有發現父母。沒關係。但是當行被取消註釋時,console.log只打印一次 - 第一個找到的父項。爲什麼會發生?

Regards

+0

控制檯沒有錯誤? – Amy

+0

@Amy沒有錯誤:( –

+0

_「這裏是我的模型」 _你爲什麼把它叫做一個模型?我只是好奇。 – evolutionxbox

回答

0

Wierd!我會在推送之前放置一個調試器語句,然後逐步完成,以確保它不會拋出一個無聲無息的錯誤。還要確保children.push沒有任何意想不到的副作用。

我懷疑children.push是以某種方式投擲,也許是因爲孩子沒有定義,但Angular正在吞嚥這個錯誤。另外,findNode肯定會返回一個FeatureFlag,而不是別的?

+0

是否有可能我無意中關閉了打印錯誤?我寫了一行應該打印錯誤但不是 –

+0

請確保您的在Chrome瀏覽器中確保所有的選項都被選中了,我會嘗試......繞過它,然後調試器; console.error(err);開發工具需要爲調試器打開聲明工作 –

+0

這不是一個像「調試你的代碼」語句那樣的答案,這可能會更好。 –