2017-03-17 49 views
2

我使用的骨幹創造了一些不錯的模型實例,並填充了一些看法和他們在一起。模型的隱藏文件從流量/取下視其是否具有空屬性

例子:

var User = Backbone.Model.extend({}); 
var userJon = new User({ 
    username:'jonraasch', 
    displayName:'Jon Raasch', 
    bio:'some nerd' 
}); 

我面臨的問題是,並非所有的模型實例將所有3個屬性。有些可能會錯過生物,其他人可能會在displayName上。

我想切出缺少的屬性從可見完全查看,當生物:「」或ID不包含生物的。它將displayName設置爲'',文檔流程中會有一個佔位符。我不想要空的佔位符。

可以這樣使用Backbone.js的,如何做?我創建了一個筆,以便幫助顯示我的意思:http://codepen.io/anon/pen/NpwERv

+0

是某種過濾像數組[減少](https://www.google.com.ph/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0ahUKEwjJp6yYzt3SAhWKabwKHS2qCJwQFggWMAA&url=https%3A%2F%2Fdeveloper.mozilla.org%2Fen- US%2Fdocs%2FWeb%2FJavaScript%2FReference%2FGlobal_Objects%2FArray%2FReduce&usg = AFQjCNG5y6qS8juF9mnkgIEZQgeRUeoJ3A&sig2 = ES7aCYTGy4b0pRyz5wQLyw&bvm = bv.149760088,d.dGc)還不夠?你做你的事像以前一樣將其過濾 –

+0

我不知道如果我跟隨,但我不使用骨幹創建和摺疊的飛行意見。該html已經在那裏。正如你所看到的,有時候過多的html已經設置好了。我只用骨幹代表模型。 – sanjihan

回答

2

根據你codepen,你可以簡單地添加以下內容:

if(!dn){ // <--- model value. Use _.isUndefined if 0 is valid 
    this.remove(); 
} 

這會從DOM刪除el元素。

Updated codepen


我覺得很奇怪,你有一個視圖來顯示一個模式的單一屬性。

在大多數的情況下的圖將顯示在整個模型數據。在這種情況下,如果你想避免被傳遞到任何模板方法你使用空屬性,你可以覆蓋您的自定義模式的構造函數的toJSON()方法來排除空值

+0

謝謝隊友。我剛剛開始抓撓主幹和JS的整體表面,所以沒有在我的代碼中的最佳做法:) – sanjihan

+1

@sanjihan看看[標籤:backbone.js]中最常見的問題,你將遇到的常見問題可能已經解決了。它可以幫助您瞭解Backbone的具體情況以及如何做Backbone方法。 –