在javascript中访问Backbone js模型

时间:2012-04-26 12:30:31

标签: javascript backbone.js

是否可以在javascript中访问Backbone.js模型的属性或函数? 如果可能的话怎么做?

我的模特:

var TimeZone = Backbone.Model.extend({
    defaults:{
        timeZoneID : 'EST5EDT',
        timeZoneShortForm : "ET",
        timeZoneLongForm : "Eastern Time",
     }
   });

的Javascript

 getTimeZoneId :function(TimeZone)          
    {
           //here for given TimeZone model.. i have to acess the timeZoneID
    }

现在我必须访问timeZoneID ..怎么可能?

3 个答案:

答案 0 :(得分:2)

我认为您正在尝试访问TimeZone的实例:

var timeZone = new TimeZone();
timeZone.get('timeZoneID');

http://documentcloud.github.com/backbone/#Model-get

答案 1 :(得分:1)

请注意,Backbone.js是一个JavaScript框架,因此您的Backbone模型就是JavaScript,就像您的getTimeZoneId函数一样。

Backbone.Model.extend()创建一个模型构造函数,您需要使用该函数创建实例(例如var mymodel = new TimeZone();)。

从您的问题中不清楚您是想获取模型实例的timeZoneID,还是来自timeZoneID原型的defaults对象的TimeZone属性模型对象。

如果您有一个名为TimeZone的{​​{1}}实例,则可以像这样获取其timeZoneID:

mymodel

但是,您不能(我不认为)检查 mymodel.get('timeZoneID'); 的{​​{1}}对象。 defaults返回一个函数,该函数不会公开传递给它的对象的任何属性。

答案 2 :(得分:0)

像ponzano所说,似乎你想要以下内容:

getTimeZoneId :function(timeZone){
  return timeZone.get('timeZoneID');
}

但请注意,timeZone函数参数是小写的。不要使用大写字母,否则你会将它与模型“class”混合使用。

当然,正弦Backbone已经定义了getter和setter,你根本不需要额外的功能......

此外,您可能不应该在模型定义前面放置var,以便它在应用程序的任何位置都是全局命名空间和可访问表单的一部分。