2012-11-30 24 views
8

Có thể sử dụng biến toàn cục trong chế độ xem backbone.js không?Có thể sử dụng biến toàn cục trong chế độ xem backbone.js không?

exmpl:

var TodoView = Backbone.View.extend({ 

counter: null ; // is this possible ? 

initialize: function(){ 

this.render(); 

}, 

render: function(){ 



} 


}); 
+2

Đó sẽ là một biến Ví dụ một cái nhìn ví dụ cụ thể, chứ không phải toàn cầu cho tất cả các trường hợp của quan điểm. – asawyer

+1

Ngoài những gì @asawyer đề cập, đó là cú pháp JavaScript không hợp lệ, nó sẽ cần phải là 'counter: null,' – Jack

+0

Thany bạn guy, vâng tôi thấy nó ngay bây giờ (; là một trong những vấn đề), tôi rất mới trong OOP vì vậy tôi không biết tất cả thuật ngữ. – Sysrq147

Trả lời

22

Bạn có thể dễ dàng lưu trữ các biến trong ít nhất 3 phạm vi khác nhau:

  • biến dụ thường xuyên duy nhất cho mỗi dụ xem
    • này có thể được lưu dưới dạng tài sản trên đối tượng this của chế độ xem
    • Ví dụ: this.selectedItem = this.$el.find('.selected');
  • biến Lớp cấp được chia sẻ bởi tất cả các trường hợp quan điểm
    • này có thể được lưu trữ trên hàm constructor View của lớp
    • Ví dụ: TodoView.counter = 0; (đặt rằng sau khi toàn bộ .extend gọi của bạn)
  • Các biến toàn cục thực sự (có, đây là những điều xấu, nhưng kể từ khi bạn yêu cầu)
    • bạn có thể bị rò rỉ bằng cách bỏ qua var hoặc chỉ rõ ràng y gán cho đối tượng window
    • Ví dụ: window.appLaunchTime = new Date()
+2

Thany bạn rất nhiều (xin lỗi cho tiếng anh của tôi hoặc cho javascript của tôi biết tôi là noob trong cả hai.) – Sysrq147

+0

Đơn giản chỉ cần tuyệt vời ... !!!! –

+0

window.xxx không hoạt động trong backbone.js. Bất kỳ ý tưởng ?? (xxx là tên biến) – jeevs

3

Ngoài những gì Peter đã nói, nếu bạn đang quan tâm đến việc gì Số tiền cho một biến tin có sẵn trên tất cả các trường hợp của TodoView bạn tạo ra sau đó bạn có thể làm một cái gì đó như sau.

(function() { 
    var counter = 0; //This can be used now as a private variable inside TodoView 

    window.TodoView = Backbone.View.extend({ 

    initialize: function(){ 
     this.render(); 
     counter += 1; 
    }, 

    render: function(){ 
    } 
    }); 
})(); 
0

thử đặt nó trong phạm vi tĩnh

var TodoView = Backbone.View.extend({ 
TodoView.counter++//reference it this way 
},{ 
counter: null ;}) 

có thể phục vụ hơi giống như một biến toàn cầu

Các vấn đề liên quan