3

ビューを作成するためのデフォルトの構成ファイルを作成したいと考えています。

私は次のようなことを考えています:

var Application = {};
Application.Config = {
   ViewerModule : {
     width    : '60%',
     height   : '60%',
     maxWidth : '99%',
     minWidth : '1%',
     iconSize : '24*24',
     defaultColor   : 'Green',
     selectedColor  : 'Orange',
     fontColor      : 'Black',
     viewerToolColor: 'White',
     defaultView    : 'Fit To Screen',
     Labels:{
            btnZoomIn     :'Zoom In',
            btnZoomOut    :'Zoom Out',
            btnRotateLeft :'Rotate Left',
            btnRotateRight:'Rotate Right',
            btnFitToScreen:'Fit to Screen',
            btnFullScreen :'Full Screen',
            btnSaveAs     :'Zoom In',
            btnExport     :'Zoom Out',
            btnPopOut     :'Rotate Left',
            btnEmail      :'Rotate Right',
            btnPdfConverter:'Fit to Screen',
            btnSetting    :'Settings'           
     }
   }
}

したがって、バックボーンでビューを作成するときに、この構成値を使用してバックボーン ビューのデフォルト値を定義できます。

私が考えたことの 1 つは、構成ファイルからバックボーン モデルに値を保存し、そのモデルでビューを作成することでした。

ただし、これが正しいかどうかはわかりません。

どうすればそれを達成できるかについて、あなたの考えや例を教えてください。

4

3 に答える 3

2

この問題を克服するために継承を使用することを検討しましたか? config の代わりにBaseView、前述のプロパティを view として持つことができますoptions。このようにして、これらの値は子ビューの実装で上書きされるか、子ビューの構築中に解析されます。

大まかな例を次に示します。

var BaseView = Backbone.View.extend({
    initialize: function() {
        this.options = {
            'Example': 'Foobar',
            'OverrideMe': 'Moo'
        };
    }
})

, ChildView = BaseView.extend({
    initialize: function() {
        this.options.Example = 'Something else';  
    }
})

, impl = new ChildView({'OverrideMe': 'Another thing'});

これが機能していることを示すフィドルです。

于 2013-08-27T13:08:28.253 に答える
1

_.defaultsビューのデフォルトを設定したい場合や_.extend、値を強制したい場合は、構成オブジェクトをビューのプロトタイプに混在させることができます。

例えば、

var Application = {};
Application.Config = {};
Application.Config.ViewerModule = {
    width: '60%',
    height: '60%'
};

var V = Backbone.View.extend({
    width: '50%'
});
_.defaults(V.prototype, Application.Config.ViewerModule);

var v = new V();
console.log(v.width, v.height);

そしてデモhttp://jsfiddle.net/nikoshr/VX7SY/

于 2013-08-27T13:46:34.437 に答える
1

私があなたを理解していれば、Model defaultsを使用することをお勧めします。ここで簡単な例を見ることができます。または、jsonオブジェクトのような構成を使用できますが、空のモデルを作成し、構成jsonをモデル(=新しいモデル)に設定する必要があります

于 2013-08-27T13:03:08.397 に答える