Javascript 带有筛选器的Ember.js路由问题
我的目标是将过滤后的数据传递给我的控制器,然后传递给我的模板。我试着不使用过滤器,一切正常。如果我甚至尝试使用一个过滤器,让一切通过,我不会得到任何数据。我甚至尝试过使用false而不是true,并摆弄过滤器的参数列表 我正在使用余烬数据装置来测试这一点。我遵循命名惯例,所以很多工作都是在幕后为我做的。但这一切似乎都在起作用(否则第一个示例也会有问题) 工作(到达控制器并最终在页面上呈现): 失败(控制器获取空阵列): 更新(尝试1): 好吧,我根据Sam Selikoff的答案做了一些尝试。我在控制器中定义了4个属性(2个过滤器、一个映射、一个普通副本),并尝试在模型页面中显示每个属性。只有属性copyDomain给出结果 控制器中的属性:Javascript 带有筛选器的Ember.js路由问题,javascript,ember.js,ember-data,Javascript,Ember.js,Ember Data,我的目标是将过滤后的数据传递给我的控制器,然后传递给我的模板。我试着不使用过滤器,一切正常。如果我甚至尝试使用一个过滤器,让一切通过,我不会得到任何数据。我甚至尝试过使用false而不是true,并摆弄过滤器的参数列表 我正在使用余烬数据装置来测试这一点。我遵循命名惯例,所以很多工作都是在幕后为我做的。但这一切似乎都在起作用(否则第一个示例也会有问题) 工作(到达控制器并最终在页面上呈现): 失败(控制器获取空阵列): 更新(尝试1): 好吧,我根据Sam Selikoff的答案做了一些尝试。我
filteredDomains: Ember.computed.filterBy('domain', 'domain', true),
upperCaseDomains: Ember.computed.map('domain', function(domain, index) {
return domain.toUpperCase() + '!';
}),
filteredDomains2: function() {
return this.get("model").filterBy('domain', true);
}.property('model.@each.domain'),
copyDomains: function(){
result = [];
this.forEach(function(item) {
result.pushObject(item);
})
console.log(result);
return result;
}.property('model.@each.domain')
App.DomainDirController = Ember.Controller.extend({
filteredDomains: function() {
return this.get("model").filterBy('someProp', true);
}.property('model.@each.someProp')
});
模型:
<ul>
<li>filteredDomains</li>
{{#each domainDir in controller.filteredDomains}}
<li>domainDir.domain</li>
{{/each}}
</ul>
<ul>
<li>filteredDomains2</li>
{{#each domainDir in controller.filteredDomains2}}
<li>domainDir.domain</li>
{{/each}}
</ul>
<ul>
<li>upperCaseDomains</li>
{{#each domainDir in controller.upperCaseDomains}}
<li>domainDir.domain</li>
{{/each}}
</ul>
<ul>
<li>copyDomains</li>
{{#each domainDir in controller.copyDomains}}
<li>domainDir.domain</li>
{{/each}}
</ul>
- 过滤网
{{{#controller.filteredomans中的每个domainDir}
- domainDir.domain
{{/每个}}
- 过滤器维护2
{{{#controller.filteredodomains2}中的每个domainDir
- domainDir.domain
{{/每个}}
- 大写域
{{{#controller.upperCaseDomains中的每个domainDir}
- domainDir.domain
{{/每个}}
- 复制域
{{{#controller.copyDomains中的每个domainDir}
- domainDir.domain
{{/每个}}
过滤通常在控制器/组件级别完成store.find
发出AJAX请求。您的目标是仅从服务器检索已过滤的数据子集,还是过滤视图层中已有的数据
通常,如果您只是想进行一些实时过滤,您可以在控制器中进行。将模型挂钩保留为this.store.find('domain\u dir')
并在控制器中添加过滤器:
filteredDomains: Ember.computed.filterBy('domain', 'domain', true),
upperCaseDomains: Ember.computed.map('domain', function(domain, index) {
return domain.toUpperCase() + '!';
}),
filteredDomains2: function() {
return this.get("model").filterBy('domain', true);
}.property('model.@each.domain'),
copyDomains: function(){
result = [];
this.forEach(function(item) {
result.pushObject(item);
})
console.log(result);
return result;
}.property('model.@each.domain')
App.DomainDirController = Ember.Controller.extend({
filteredDomains: function() {
return this.get("model").filterBy('someProp', true);
}.property('model.@each.someProp')
});
您还应该查看一些速记:
App.DomainDirController = Ember.Controller.extend({
filteredDomains: Ember.computed.filterBy('model', 'someProp');
});
现在在模板中,您可以执行以下操作
{{#each domain in filteredDomains}}
...
事实上,我真的不知道该把过滤放在哪里,所以非常感谢你的建议。我试过你的解决办法,但还是遇到了问题。我已经用我尝试过的方法和结果更新了我的问题。现在,我可以通过修改copyDomains属性来绕过这个问题(通过所有步骤),但我更喜欢使用Ember方法。这个解决方案对我来说很有效,但我真的很困惑为什么它会首先发生。我想,
Ember.Route#模型
可以满足任何承诺。。。