【问题标题】:Filtering a collection in Titanium Alloy过滤钛合金中的集合
【发布时间】:2013-08-21 01:33:46
【问题描述】:

我从一个控制器 (Convos) 启动了一个 Messages 控制器。我传入一个 id,并尝试使用该 id 过滤哪些消息绑定到新视图。由于某种原因,过滤不起作用,并且正在显示所有消息记录。这是我的 Messages 控制器中的代码。

消息模型的数据结构

message_id: "integer",
convo_id: "integer",
created: "text",
author: "text",
body: "text",

Convos.js

var messages = Alloy.createController('messages', { 
    convoId: e.rowData.convoId,
});
messages.getView().open();

Messages.js

var args = arguments[0] || {}

var messages = Alloy.Collections.messages;
messages.reset();
messages.fetch();
messages.where({convo_id: args.convoId});

我做错了什么吗? Titanium 关于合金的文档很少,Backbone 文档似乎假设您已经知道如何使用它...

【问题讨论】:

  • 数据是什么样的?
  • 编辑问题以显示数据。

标签: backbone.js titanium titanium-alloy


【解决方案1】:

where 函数返回一个模型数组,如果不更新实际集合

http://backbonejs.org/#Collection-where

var filteredArray = messages.where({convo_id: args.convoId});

【讨论】:

  • 噢噢噢!出于某种原因,我假设在集合上调用方法会在收集的数据上执行该方法。这种行为似乎不一致。例如,collection.reset()确实重置集合;你不必去resetCollection = collection.reset()。 Grr。那么,如何将我的视图绑定到过滤后的数据呢? AFAIK 我只能将我的 TableView 绑定到一个集合。无论如何,谢谢亚伦!
  • 您想在视图绑定中指定的过滤方法中进行过滤。向下滚动到 dataFilter docs.appcelerator.com/titanium/latest/#!/guide/… 部分
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-01
  • 2013-09-10
  • 2015-09-17
  • 1970-01-01
相关资源
最近更新 更多