2013-06-26 95 views
0

我是backbone.js的新手,這裏是我的問題。Backbone.js打印「function String(){[native code]}」而不是模型屬性

首先,我設置的路由:

var Router = Backbone.Router.extend({ 

    initialize: function(){ 

     var data = { 
     member: new Member.Model({ _id: 'some id' }) 
     }; 

     _.extend(this, data); 
     // Use main layout and set Views. 
     app.useLayout("main-layout").setViews({ 
     ".member": new Member.Views.Start(data) 
     }).render(); 
    }, 
    routes: { 
     "": "index" 
    }, 
    index: function() { 
     this.member.fetch(); 
    } 
}); 

在指數航線,這將僅僅獲得起點視圖,它當一個元素成員類匹配添加到DOM。這工作得很好。然而在模板中我有:

<%= model.get('username') %> 

而這種打印

function String() { [native code] } 

而不是模型屬性。這裏是模型和視圖類:

var Member = app.module(); 

Member.Model = Backbone.Model.extend({ 
    urlRoot: '/Members', 
    idAttribute: "_id", 
    defaults: { 
     _id: null, 
     name: String, 
     email: String, 
     username: String, 
     initials: String, 
     provider: String, 
     provider_id: String, 
     confirmed: Boolean, 
     provider_avatar: String 
    }, 
    initialize: function(models, options){ 

    } 
    }); 

Member.Views.Start = Backbone.View.extend({ 
    template: "member/start", 
    serialize: function() { 
     return { model: this.options.member }; 
    },   
    initialize: function() { 

    } 
    }); 

對於我的項目,我使用的骨幹樣板https://github.com/backbone-boilerplate/backbone-boilerplate模板enging:https://github.com/backbone-boilerplate/backbone-boilerplate/wiki/Working-with-templates

爲什麼我得到這個文本,而不是模型值,以及如何解決這一問題?

+0

沒有看到模型定義或模板調用或你正在使用什麼樣的模板引擎,很難提供幫助,用戶名被定義爲一個函數嗎? – Andrew

+0

@Andrew我更新了我的問題 –

回答

3

username屬性的默認值是String

Member.Model = Backbone.Model.extend({ 
    ... 
    defaults: { 
     ... 
     username: String, 
     ... 

String是一個函數:

> String 
function String() { [native code] } 

這是你看到的(記住,在Javascript中你可以分配功能到變量)。

如果你希望默認爲String類型的一些,您需要更改代碼,如下所示:

Member.Model = Backbone.Model.extend({ 
    ... 
    defaults: { 
     ... 
     username: '', 
     ... 
1

在模型中定義您定義所有的缺省值的功能,一個辦法修復它是用實際字符串的默認值,

defaults: { 
    _id: null, 
    name: '', 
    email: '', 
    username: '', 
    initials: '', 
    provider: '', 
    provider_id: '', 
    confirmed: false, 
    provider_avatar: '' 
}, 

如果鍵入String到瀏覽器的控制檯,您會得到,

function String() { [native code] } 

這就是爲什麼你的輸出是如何。

相關問題