停止Smart Client将Array类元素添加到我的阵列

时间:2014-07-03 15:56:19

标签: javascript arrays smartclient

我目前正在建设一个项目,要求我拉入一系列对象,然后将它们固定在地图上。

我将我的标记存储在数组中,以便在用户搜索不同的条件时重置地图 这一切都完美无缺,直到我加入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中为生成大型,动态可排序和可分组的表提供更好/更清晰的解决方案。

1 个答案:

答案 0 :(得分:1)

我也不熟悉Smart Client,但是代码中存在应该解释TypeError的问题。 wrap变量设置为IIFE的返回值(从第1行开始的函数)。由于它不返回任何内容,因此wrap将是未定义的。 doSomething只是IIFE的本地函数,所以你不能在它之外调用它。

此外,示例代码中的花括号似乎有问题?与{ ...

相比,}太多return { doSomething: doSomething };

假设您使用花括号更正问题,可以通过在wrap IIFE末尾添加以下内容(在最后一个for循环之后)来消除它:

wrap

那应该将对象分配给{{1}}变量