我的视图中有一个事件,其中keyup执行了对TMDB api的获取请求,
class Movieseat.Views.Moviesearch extends Backbone.View
template: JST['movieseats/moviesearch']
el: '#moviesearch'
initialize: (opts) ->
@collection.on('reset', @render, this)
{@collection} = opts
@render()
return
render: ->
$(@el).html(@template(collection: @collection))
return
events:
"keyup input": "doSearch"
doSearch: (e) ->
@collection.setQuery $(e.currentTarget).val()
@collection.fetch()
view = new Movieseat.Views.Movie()
$('#movies').append(view.render().el)
这是我的收藏,
class Movieseat.Collections.Moviesearch extends Backbone.Collection
url: -> "http://api.themoviedb.org/3/search/movie?api_key=a8f7039633f2065942cd8a28d7cadad4&query=#{@query}"
setQuery: (q) ->
@query = q
return
因此,如果我的输入是inception
,则这是获取请求,
http://api.themoviedb.org/3/search/movie?api_key=a8f7039633f2065942cd8a28d7cadad4&query=inception
正如您在我看来可以看到的那样,我附加了一个名为movies
的模板。我想在该模板中显示获取请求中的所有original_title
。并在模板发生变化时更新。
答案 0 :(得分:1)
根据我的理解,您的收藏包含movie
类型的元素或类似的元素。在fetch
收集集合后,其模型应包含original_title
和poster_path
。现在,您可以使用pluck方法读取所有这些属性。代码应该看起来像那样(javascript):
collection.on("sync", function() {
myView.displayTitles(collection.pluck("original_title"));
})
通过发布此代码更新,我想知道为什么不在集合模板中使用这些属性。鉴于您的集合未声明其包含的模型类型,您无法使用@model.get('prop')
语法,因为@model
不是Backbone模型。尝试使用
@model.prop
语法代替。