2012-12-13 38 views
6

Làm thế nào để bạn tạo các trường tĩnh trong một lớp và sau đó truy cập chúng từ bên ngoài lớp đó trong Sencha Touch 2?Truy cập các thuộc tính tĩnh trong Sencha Touch

Ví dụ tôi đã tạo ra một singleton đơn giản với một tĩnh duy nhất:

Ext.define('App.util.Config', { 
    singleton: true, 
    statics: { 
     url: { 
      USER: 'http://localhost:3436/api/user' 
     } 
    }, 
    config: { }, 
    constructor: function (config) { 
     this.initConfig(config); 
     this.callParent([config]); 
    } 
}); 

tôi không thể truy cập vào các lĩnh vực USER sử dụng App.util.Config.url.USER nhưng với App.util.Config .self.url.USER. Nhìn vào một mẫu trên các tài liệu Sencha, dường như tôi sẽ có thể có khả năng truy cập vào lĩnh vực này theo cách cũ:

See Statics Section in this link and how they access the Computer.InstanceCount field

+0

Làm việc tốt cho tôi. App.util.Config.url có được xác định không? App.util.Config.self trả lại những gì? –

+0

App.util.Config.url \t 'undefined' App.util.Config.self \t' function() { \t trở this.constructor.apply (điều này, lập luận); \t} ' App.util.Config.self.url.USER \t' "http: // localhost: 3436/api/user" ' – Nate

+1

Một phần thông tin khác có liên quan, tôi không phải là 'Ext. tạo (...) 'lớp này, nhưng yêu cầu nó trong app.js' yêu cầu: [ 'Ext.MessageBox', 'App.data.ConnectionRouter', 'App.util.Config' ], ' – Nate

Trả lời

6

Tôi nghĩ rằng đây là những gì bạn muốn

Ext.define('App.util.Config', { 
    singleton: true, 
    statics: { 
     url: { 
      USER: 'http://localhost:3436/api/user' 
     } 
    }, 
    config: { }, 
    constructor: function (config) { 
     var user=this.self.url.User; 
    } 
}); 
1

tôi nhận ra rằng đây là một câu hỏi cũ, nhưng tôi tình cờ gặp nó khi tìm kiếm một thứ khác.

Tôi tin rằng vấn đề là sử dụng singleton:true. Khi điều này được sử dụng, thì mọi thứ đều tĩnh và không cần xác định thuộc tính một cách rõ ràng là tĩnh.

Sau đây sẽ là sử dụng đúng:

Ext.define('App.util.Config', { 
    singleton: true, 
    url: { 
     USER: 'http://localhost:3436/api/user' 
    }, 
    config: { }, 
    constructor: function (config) { 
     this.initConfig(config); 
     this.callParent([config]); 
    } 
});