如何在树面板上应用远程过滤器

时间:2017-07-05 18:56:04

标签: extjs extjs4 extjs4.2 extjs5 sencha-architect

我有一个树面板,与之关联的商店是内存我使用loadData函数加载数据,我正在进行呼叫服务调用。当我说remoteFilter时,我想为列添加过滤器并远程过滤它们:true它不会调用后端。关于如何实现这一目标的任何建议。

Fiddle with my funcions and views (fiddle is not running )

1 个答案:

答案 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删除所有中间代码并重新格式化。由于您必须修改服务器端以启用远程过滤,因此这将是使代码正常运行的最具前瞻性的方法。