我开始使用Sencha Touch 2,我只是想知道它是如何处理资源清理的.
特别是:
想象一下,我们有一堆由url重定向触发的控制器.这些Controller实例是否会被缓存,或者Sencha是否每次需要在控制器上调用方法时都会创建新实例
视图相同.sencha是否缓存视图,或者每次需要再次渲染时都会重新创建它们.什么时候视图被破坏(如果是)?
我可以控制sencha如何处理这些事情吗?
我需要快速查询以查找某点的某个GPS半径内的所有文档.半径很小,精度不是那么关键,所以我不需要考虑球面几何形状.会有很多写作.使用2d索引而不是2dsphere,我会获得更好的性能吗?
我正在使用用户特定的数据集构建Sencha Touch 2应用程序.
Sencha Touch App <=====>带有REST服务的Java服务器后端(许多AJAX请求=))
我实际拥有的是:
应用程序初始化,登录表单开始发挥作用.在将表单作为AJAX请求提交后,服务器后端会检查用户数据并调用客户端回调函数.
我想做的是:
好的,不应该是问题.
但是我怎样才能实现以下目标:
大多数数据特定于一个用户,如果需要,应由REST服务返回(通过单击导航,...).我如何在每个AJAX请求中发送sessiontoken(见上文) - 所以服务器可以提供合适的数据集(假设令牌有效)?
在AJAX请求中发送cookie
我已经读过如果网址在同一个空间,cookie会自动添加到请求中,对吧?Java服务器位于同一个域(localhost:8080),但cookie不可用 - 而不是像"app.json"这样的URL上的请求.我认为跨域请求真的是域特定的吗?
在AJAX请求中发送参数
因为cookie不是我想到的"手动"向ajax请求添加参数的可能性.该应用程序将包含许多AJAX请求,这就是为什么我不想手动添加令牌 - 我试图覆盖Ext.Ajax的请求功能,但我失败了;-(:
(function() {
var originalRequest = Ext.data.Connection.prototype.request;
Ext.override(Ext.data.Connection, {
request : function(options) {
alert("Do sth... like add params");
return originalRequest.apply(this, options);
}
});
})();
Run Code Online (Sandbox Code Playgroud)
错误:
未捕获错误:[错误] [Ext.data.Connection#request]未指定URL
我还尝试添加一个监听器
Ext.Ajax.add({
listeners : {
beforerequest : function( conn, options, eOpts ){
alert("Do sth... like add …Run Code Online (Sandbox Code Playgroud) 这支笔显示我的问题:http://codepen.io/PiotrBerebecki/pen/RKxOKb
单击按钮时我可以更改背景颜色但是在单击时按住Shift键时我想应用不同的颜色.我当前的事件对象似乎无法访问键盘事件.
你知道怎么解决吗?
这是React代码:
class App extends React.Component {
constructor() {
super();
this.handleClick = this.handleClick.bind(this);
this.state = {
wasOriginalColorChanged: false,
buttonColor: 'blue'
}
}
handleClick(e) {
let newButtonColor;
if (!this.state.wasOriginalColorChanged) {
if (e.shifKey) {
newButtonColor = 'green';
} else {
newButtonColor = 'tomato';
}
} else {
newButtonColor = 'blue';
}
this.setState({
buttonColor: newButtonColor,
wasOriginalColorChanged: !this.state.wasOriginalColorChanged
});
}
render() {
return (
<div className="button"
onClick={this.handleClick}
style={{backgroundColor: this.state.buttonColor}}>
<p>Click me to change color to tomato</p>
<p>Click me + …Run Code Online (Sandbox Code Playgroud)我正在使用Sencha Touch 2中的导航视图在我的应用程序中提供视图导航.
目前我正在使用在控制器的启动方法中创建视图对象(例如"VOCABI.view.Search",使用xtype "searchview")的方法,并通过在控制器配置中包含以下内容来引用它:
refs: {
searchView: 'searchview'
}
Run Code Online (Sandbox Code Playgroud)
当我想要呈现搜索视图时,我将其推入导航视图,如下所示:
navView = this.getNavView(); // Defined
navView.push([this.getSearchView()]); // Defined by refs
Run Code Online (Sandbox Code Playgroud)
问题是当用户完成搜索并按下视图上的后退按钮时,searchView似乎被破坏,因此下次用户想要搜索某些东西时会导致麻烦,因为该getSearchView()方法现在返回null.
这是导航视图的默认行为,它在pop()调用方法时会破坏弹出的视图吗?
如果是这样,每次呈现搜索视图时,这是一个不好的解决方法吗?喜欢
Ext.create("VOCABI.view.Search");
this.getNavView().push([this.getSearchView()]);
Run Code Online (Sandbox Code Playgroud)
非常感谢你的帮助!
我正在使用以下代码来过滤商店
var filter = new Ext.util.Filter({
property: 'FIRST_NAME',
value: 'ABC'
});
store.getFilters().add(filter);
Run Code Online (Sandbox Code Playgroud)
这工作正常。
现在,我想用多个值过滤它。我试过
var filter = new Ext.util.Filter({
property: 'FIRST_NAME',
value: ('ABC' || 'XYZ')
});
store.getFilters().add(filter);
Run Code Online (Sandbox Code Playgroud)
但这仅返回 XYZ 记录。任何其他方式来做到这一点。我正在使用煎茶 6。
我的列表视图布局类似于Pinterest,具有绝对定位的块.不幸的是,这似乎需要在刷新时进行完全重新初始化.如果仅重新加载商店(如下所示),则新块的位置不正确.
如何在用户点击刷新时重新加载应用程序?
这是我的观点:
Ext.require(['Ext.data.Store', 'MyApp.model.StreamModel'], function() {
Ext.define('MyApp.view.HomeView', {
extend: 'Ext.navigation.View',
xtype: 'homepanel',
requires: [
'Ext.dataview.List',
],
config: {
title: 'Home',
iconCls: 'home',
styleHtmlContent: true,
navigationBar: {
items: [
{
xtype: 'button',
iconMask: true,
iconCls: 'refresh',
align: 'left',
action: 'refreshButton'
}
]
},
items: {
title: 'My',
xtype: 'list',
itemTpl: [
'<div class="post">',
...
'</div>'
].join(''),
store: new Ext.data.Store({
model: 'MyApp.model.StreamModel',
autoLoad: true,
storeId: 'stream'
}),
}
}
});
});
Run Code Online (Sandbox Code Playgroud)
模型:
Ext.define('MyApp.model.StreamModel', {
extend: 'Ext.data.Model',
config: {
fields: [
'post_id', …Run Code Online (Sandbox Code Playgroud)