美好的一天,
我真的很难给帖子正确标题(描述问题),所以请原谅我。
问题:
我的课程有两种方法如下:
1 import FormPopulator = require("../util/FormPopulator");
2
3 class UIX {
4
5 formPopulator: FormPopulator;
6
7 contructor () {
8 this.formPopulator = new FormPopulator();
9 }
10
11 public setDefaultValues(defaultValues: DefaultValues) {
12 for (var i = 0; i < SearchAllFormProperties.searchFormProperties.length; i++) {
13 this.pushDataToUI(SearchAllFormProperties.searchFormProperties[i], defaultValues);
14 }
15 alert("End Of the loop.");
16 }
17
18 public pushDataToUI(property: string, defaultValues: DefaultValues) {
19 switch (property) {
20 case "textField":
21 (<HTMLInputElement> document.getElementById("textField")).value = "";
22 break;
23 case "dropDown":
24 this.formPopulator.populateTheDropBox("dropDown", defaultValues.listOfValues);
25 alert("after populateTheDropBox");
26 break;
27 default:
28 alert("Property: " + property + " is not accepted.");
29 }
30 }
31 }
现在 - setDefaultValues
被调用,但执行没有到达 UIX 类的行15
,除非我注释掉行同一个类的24
即populateTheDropBox
调用,但是它到达行25
意味着它从populateTheDropBox
方法返回,但为什么不返回{{1} }
setDefaultValues
PS 如果我从类 FormPopulator 的第1 class FormPopulator {
2 public populateTheDropBox(selectElementID: string, listOfElements: Array<any>) {
3
4 // Get the combo box
5 var selectElement = <HTMLSelectElement> document.getElementById(comboBoxID);
6 // Reset the options
7 selectElement.options.length = 0;
8
9 for (var i = 0; i < listOfElements.length; i++) {
10
11 var option = document.createElement("option");
12 option.value = ""+listOfElements[i].id;
13 option.innerHTML = listOfElements[i].value;
14
15 selectElement.appendChild(option);
16 }
17 }
18 }
行开始注释循环 - 它会返回9
并执行第{{I}行1}}类 UIX 即setDefaultValues
我真的很难解释这种行为,并且没有例外。
答案 0 :(得分:0)
除非我注释掉同一个类的第24行,即populateTheDropBox调用,但它到达第25行意味着它从populateTheDropBox方法返回,但为什么不返回setDefaultValues
根据您的代码,您在循环中调用pushDataToUI
。只是因为你进入第25行alert("after populateTheDropBox");
一次并不意味着循环终止。它可能会继续执行(并且可能在崩溃调用堆栈的某些时候出现javascript错误)并且您可能永远不会访问alert("End Of the loop.");
。