我是新来的,所以请把我当傻瓜对待。我首先要做的是理解这个概念。
在我的应用程序中,我严重依赖于几个jQuery插件,它们在回调中获取新的数据部分,这就是这些插件的设计方式,但我不确定如何触发它们从API中获取新数据部分,并在插件呈现后传递给API更新的查询参数。
我已经将插件封装在一个组件中,在组件的模板中,我将数据作为(我在这里使用emplem.js语法)发送给它
= plotly-chart chartData=model
在我的模型中
//app/models/data-points.js
import DS from 'ember-data';
export default DS.Model.extend({
// time: DS.attr(),
ch1: DS.attr(),
ch2: DS.attr(),
ch3: DS.attr(),
temperature: DS.attr(),
});
然后在组件本身中获取数据
//app/components/plotly-chart.js
dataPoints: Ember.computed.map('chartData', function(item){
return item.getProperties('ch1', 'ch2', 'ch3', 'temperature');
}),
并对数据进行一些操作,这对问题本身并不重要。
啊,我有一个路由图,稍后会调用该组件
//app/routes/graph.js
import Ember from 'ember';
export default Ember.Route.extend({
queryParams: {
start_timestamp: {
refreshModel: true
},
end_timestamp: {
refreshModel: true
}
},
model(params) {
return this.get('store').query('data-point', params);
}
});
因此,正如您所见,我尝试通过查询参数获取新属性,最后,如果我在浏览器中更新url,效果会很好,但现在我可以触发对API的新调用并获取新数据,并在组件本身中获取新数据吗?
我也很难理解控制者在所有这些事情中扮演的角色。有人提到控制器将很快被弃用,但仍在这里使用https://guides.emberjs.com/v2.10.0/routing/query-params/我的代码似乎在没有控制器的情况下可以工作,所以这真的很令人困惑。
我还怀疑,也许我应该使用服务来实现我想要实现的目标,但不确定如何实现。
EmberMaven,你能帮我指出正确的方向吗?最重要的是如何使用更新后的查询参数从API中获取新的数据部分(查询参数到API本身,不一定是ember应用程序,但我怀疑ember数据中的数据是相同的?或者不是%)%)。
更新1
我真的应该用服务来做,不是吗?将参数传递到服务并查询那里的存储。这是正确的模式吗?
然后url中的查询参数与查询存储不同,是一个独立的东西。我说得对吗?
2条答案
按热度按时间nwnhqdif1#
但我如何才能触发对API的新调用,获取新数据,并在组件本身中获取新数据?
如果您使用一个操作(与当前路由设置相结合)更改控制器中的queryParam值,它将调整您的路由并重新调用您的API,因为这些值被绑定在一起,使这个特定用例变得简单:
由于更换控制器的工作还没有完成,所以它们不会在很长一段时间内消失。如果你想的话,你可以在服务中做一些这样的事情,但是没有必要,因为你已经快完成了。
tag5nh1u2#
谢谢,这很有道理。我只是担心我做错了。
顺便说一下,我终于找到了从控制器Access store from component访问store的方法,但是:1.我无法从变量中取出数据,可能是我太笨了。2.我认为直接访问组件中的存储是正确的方式,最好使用服务,还是依赖“数据向下操作向上”(DDAU)范式?
最后,我能够从控制器中获取调用控制器操作的数据的新部分,但随后出现了下一个问题-数据被更新了,但JS代码不知道这一点,因为我向jQuery插件提供了这些数据,它没有自动获取更改。我想我可能在那里做得不对%)
但最后,我通过向该变量添加一个Ember的观测器,并在观测器中调用一个重画函数(用于这个特定位置的图表)来实现它。
@acorncom谢谢!