javascript - Ember 从搜索字段更新路由中的 API url

标签 javascript ember.js

我想知道是否可以从搜索字段更新路由中的 API URL?

App.ArtistRoute = Ember.Route.extend({
model: function(ishav) {
    return $.getJSON('http://ws.audioscrobbler.com/2.0/?method=artist.getinfo&artist='+ishav.name+'&api_key=xxxxxxxxxxxxxxxx&format=json').then(function(data){
        console.log(data.artist)
        return data.artist
    })
}
});

我想从搜索字段中获取名称,而不是 ishav.name

如何做到这一点?

最佳答案

你一定能做到。您提供的代码中缺少的部分就是发生这种情况的地方。从 View 中,您将重定向到路线并将该术语作为参数传递。

在 View 中,您可以绑定(bind)您的输入字段

{{input class="search-query" type="search"}}

当情况发生变化时,您将在 Controller 上执行某些操作:

search: function (val) {
  this.transitionToRoute(App.ArtistRoute, val);
}.property()

然后在您的路线上您可以简单地使用该名称。

额外

为了避免不必要的网络请求,我只会在debounce内引入转换函数(以确保只调用一次):

search: function (val) {      
  Ember.run.debounce(this.searchArtist, val, 500);
}.property(),
searchArtist: function (name) {
  this.transitionToRoute(App.ArtistRoute, name);
}

关于javascript - Ember 从搜索字段更新路由中的 API url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21538747/

相关文章:

ember.js - 从 Store 中删除记录而不导致服务器调用 DS.Store#commit

ember.js - 在 View 中显示 emberjs 计算属性

javascript - 如何过滤数据列表以呈现到 emberjs 中的多个导出中

ember.js - 在 ember v2 路由器中,为什么controllerFor() 不提供对此 Controller 的引用?

javascript - Ember 数据创建记录并在额外点击时添加incrementProperty/decrementProperty

javascript - Grunt 服务命令抛出错误

javascript - Chrome 扩展 : identify web requests of background-page iframe?

Javascript:函数提升

javascript - 概括一个专门的 JQuery 函数

javascript - $(opener.document).find ('.target' ).css ('display' ) 无法在资源管理器中工作