1

是否可以在 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 .. 这怎么可能?

4

3 回答 3

2

我假设您正在尝试访问以下实例TimeZone

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

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

于 2012-04-26T12:33:25.990 回答
1

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

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

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

如果您有一个TimeZone名为 的实例mymodel,您可以像这样获取它的 timeZoneID:

 mymodel.get('timeZoneID');

但是,您不能(我不认为)defaults检查TimeZone. Backbone.Model.extend()返回一个不公开传递给它的对象的任何属性的函数。

于 2012-04-26T12:41:08.857 回答
0

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

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

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

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

此外,也许您不应该var在模型定义的前面加上 ,以便它成为全局命名空间的一部分,并且在您的应用程序中随处可见。

于 2012-04-26T12:40:22.777 回答