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からプロパティを取得するのかは、質問からは明確ではありません。defaultsTimeZone

TimeZoneと呼ばれるインスタンスがある場合mymodel、次のようにそのtimeZoneIDを取得できます。

 mymodel.get('timeZoneID');

defaultsただし、のオブジェクトを検査することはできません(私は思いません)TimeZoneBackbone.Model.extend()渡したオブジェクトのプロパティを公開しない関数を返します。

于 2012-04-26T12:41:08.857 に答える
0

ポンサノが言ったように、あなたは次のものが欲しいようです:

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

ただし、timeZone関数の引数は小文字であることに注意してください。大文字は使用しないでください。大文字を使用すると、モデルの「クラス」と混同されます。

もちろん、正弦バックボーンはすでにゲッターとセッターを定義しているので、追加の関数はまったく必要ないかもしれません...

さらに、モデル定義の前にを置くべきではないかもしれません。varそうすれば、それはグローバル名前空間の一部であり、アプリケーション内のどこからでもアクセス可能なフォームになります。

于 2012-04-26T12:40:22.777 に答える