我有一個我正在用Trigger.io構建的骨幹應用程序,並且有點混淆爲什麼當我單擊手機工具欄中的後退按鈕時數據正在消失。骨幹集合在回去時沒有渲染
這裏的設置:
我有一個觀點,SearchResultsView,看起來像這樣(爲簡潔,刪除Trigger.io代碼):
window.SearchResultsView = Backbone.View.extend({
initialize: function() {
this.template = _.template($('#searchResultsView-template').html());
},
render: function() {
var self = this;
var renderedContent = this.template();
$(this.el).html(renderedContent);
if (window.resultsCollection) {
self.drawList(window.resultsCollection);
}
return this;
},
events: {
"click #submitQuery" : "processClick"
},
drawList: function(collection) {
collection.each(function(place){
window.console.log(place.get("name"));
$("#resultsList").append("<li><a href='#locationdetail/"+place.id+"' class='link'>" + place.get("name") +"</a></li>");
});
},
processClick: function() {
var self=this;
this.querystring = $("#searchBox").val(); //get the query
window.resultsCollection = new Places(null, {query: this.querystring});
window.resultsCollection.fetch(); //this is fetching via a call to the FourSquare API, and populating the models in the collection with that data
window.resultsCollection.bind('reset', function(collection){
self.drawList(collection);
});
}
});
這裏是模板:
<script type="text/template" id="searchResultsView-template">
<div id="searchbar"></div>
<h1>Results Bitch</h1>
<input type="text" id="searchBox"></input>
<input type="submit" id="submitQuery"></input>
<ul data-role="listview" id="resultsList">
</ul>
<a href="locationdetail">Click me</a>
</script>
這裏是路由器:
searchresults: function() {
this.searchresults = new SearchResultsView({});
$('#container').empty();
$('#container').append(this.searchresults.render().el);
},
下面是它在實踐中的工作方式:當我最初加載頁面時,沒有結果列表(因爲它應該是)。我輸入查詢並執行搜索,然後它返回,按照它應該填充列表。然後,我點擊一個項目進入另一個視圖,當我點擊「返回」時,列表又是空的。
我想要做的是測試以查看集合是否仍然存在,如果存在,請繼續並重新呈現列表,但它永遠不會呈現列表。集合存在,因爲我可以將其記錄到控制檯並查看數據。
我懷疑#resultsList元素尚不可用,所以當它追加結果給它時,它找不到它,因此沒有顯示任何東西。
所以:
- 這聽起來是正確的?
- 爲什麼?當事情正常時,這與初始負載有何不同?
希望我很清楚。我沒有包含模型和集合,以保持簡短。如果這些將有所幫助,我很樂意將它們包括在內(儘管我傾向於認爲這是一個觀點問題)。
謝謝!
謝謝Venkat。我在上面的代碼中添加了模板和路由器。你能幫我看看我們的代碼之間的區別嗎? – 2012-07-25 12:16:31
我用我的代碼添加了一個JSFiddle:http://jsfiddle.net/53Ln4/。你可以看到問題。您可以搜索,獲取項目列表,然後單擊查看該項目。然後,當您單擊「返回結果」時,列表不會填充。 – 2012-07-25 20:52:56
請找到編輯的答案 – 2012-07-27 04:33:14