我有一个树面板,与之关联的商店是内存我使用loadData函数加载数据,我正在进行呼叫服务调用。当我说remoteFilter时,我想为列添加过滤器并远程过滤它们:true它不会调用后端。关于如何实现这一目标的任何建议。
答案 0 :(得分:1)
代码完全混乱,并且表明对ExtJS的核心概念缺乏了解。您应该清理它并尽可能使用标准化的ExtJS方法。
现在,您正尝试将@Component({
selector: 'app-login',
templateUrl: './login.component.html',
styleUrls: ['./login.component.css'],
providers: [AuthenticationService]
})
export class LoginComponent implements OnInit {
error_message: string = 'Login Unsuccessful'
login_info: any = {};
constructor(public router: Router,
private authenticationService: AuthenticationService) {
}
ngOnInit() {
}
formSubmitted(data): void {
this.login(data.username, data.password);
}
login(username, password) {
event.preventDefault();
this.authenticationService.login(username, password, (data) => {
console.log(data);
},
(err) => {
console.log(err);
})
}
放在具有remoteFilter: true
代理的商店上。 memory
代理不是服务器代理,唉没有远程过滤的可能性。在该商店中添加memory
只会造成伤害或无所作为。
然后,您通过手动执行remoteFilter:true
将数据加载到具有内存代理的商店中。顺便说一句,您希望由服务器应用的过滤器不属于您手工制作的Ajax请求。
通常,人们会在具有Ext.Ajax.request
代理的商店上使用store.load
从服务器加载商店(这会在引擎盖下执行ajax
,但所有特殊设置都会存储支持)。在这种情况下,Ext.Ajax.request
有意义,因为您设置的过滤器随后会提交给服务器,然后服务器必须过滤掉不应在客户端显示的记录。 (让我们这样说吧,从你的前端代码我怀疑后端支持过滤等任何内容。)
然后,您似乎正在将数据加载到不存在ExtJS预期格式的树存储中。您应该研究是否可以通过以下方式创建模型,即可以从服务器的响应中直接加载树存储,并使用remoteFilter
删除所有中间代码并重新格式化。由于您必须修改服务器端以启用远程过滤,因此这将是使代码正常运行的最具前瞻性的方法。