Titanium JS:使用Alloy数据绑定时出错:' undefined'不是一个对象(评估' __ alloyId60.on')

时间:2014-07-25 09:58:21

标签: titanium titanium-mobile appcelerator titanium-alloy

我在Titanium Alloy中创建了一个新的控制器(search.js),我在其中引用了我的一个集合:

search.js

var searchResults = Alloy.Collections.searchResults;

然后在我看来(search.xml)我创建了一个TableView,并添加了dataCollection属性:

search.xml

<TableView id="resultsTable" dataCollection="searchResults">
    <TableViewRow title="{name}" />
</TableView>

在我的控制器中,当用户进行搜索时,此集合将通过在线API填充数据。在此代码中,results是一个包含所有数据的JSON对象:

search.js

_.each(results, function (item) {
   var beer = Alloy.createModel('searchResults', item);
   searchResults.push(beer);
});

当我运行我的应用程序时,收到以下错误消息:

  

&#34;&#39;未定义&#39;不是一个对象(评估&#39; __ alloyId60.on&#39;)&#34;

我不知道我哪里出错了,我错过了什么吗?

1 个答案:

答案 0 :(得分:2)

我通过在alloy.js文件中定义集合的全局实例来修复此错误:

Alloy.Collections.searchResults = Alloy.createCollection('searchResults');

我是在Appcelerator开发者论坛上的 this answer 找到的。