我目前正在建设一个项目,要求我拉入一系列对象,然后将它们固定在地图上。
我将我的标记存储在数组中,以便在用户搜索不同的条件时重置地图
这一切都完美无缺,直到我加入Smart Client
。
我对Smart Client
不太熟悉,但似乎是在我的数组中添加了Array
类对象,从而破坏了我的for循环。
var wrap = (function() {
var arr;
function myFunc(a) {
for (var i in arr)
arr[i] = null; //doing this to set all markers to null
}
arr = [];
for (var i in a) {
arr.push(a[i]);
}
}
return {
doSomething: function(a) { myFunc(a); }
}
})();
wrap.doSomething([1,2,3,4]);
wrap.doSomething([1,2,3,4]);
这给了我一个TypeError: undefined is not a function
错误。
smartclient library,聪明的gwt。 我已经包含了以下文件。
<script>var isomorphicDir = "/smartclient/isomorphic/";</script>
<script src="/gmap/smartclient/isomorphic/system/modules/ISC_Core.js"></script>
<script src="/smartclient/isomorphic/system/modules/ISC_Foundation.js"></script>
<script src="/smartclient/isomorphic/system/modules/ISC_Containers.js"></script>
<script src="/smartclient/isomorphic/system/modules/ISC_Grids.js"></script>
<script src="/smartclient/isomorphic/system/modules/ISC_Forms.js"></script>
<script src="/smartclient/isomorphic/system/modules/ISC_DataBinding.js"></script>
<script src="/smartclient/isomorphic/skins/Enterprise/load_skin.js"></script>
无论在我自己的js之前或之后初始化这些文件,我仍然会得到同样的错误。
我对可行的替代方案持开放态度,这些替代方案可以在javascript中为生成大型,动态可排序和可分组的表提供更好/更清晰的解决方案。
答案 0 :(得分:1)
我也不熟悉Smart Client,但是代码中存在应该解释TypeError的问题。 wrap
变量设置为IIFE的返回值(从第1行开始的函数)。由于它不返回任何内容,因此wrap将是未定义的。 doSomething
只是IIFE的本地函数,所以你不能在它之外调用它。
此外,示例代码中的花括号似乎有问题?与{
...
}
太多return {
doSomething: doSomething
};
假设您使用花括号更正问题,可以通过在wrap IIFE末尾添加以下内容(在最后一个for循环之后)来消除它:
wrap
那应该将对象分配给{{1}}变量