2012-02-23 33 views
5

Vì vậy, câu hỏi đầu tiên tôi không thể tìm thấy câu trả lời. Có thể là lý do đủ để đặt câu hỏi đầu tiên của riêng tôi. Xin lỗi nếu câu trả lời có thể được tìm thấy bên ngoài phạm vi của backbone.js.Sử dụng các biến toàn cục trong backbone.js

Trong ứng dụng backbone.js, tôi cần phải có quyền truy cập vào một số biến trong các hàm khác nhau, vì vậy tôi phải sử dụng một số thiết lập biến chung.

Tôi tự hỏi liệu giải pháp hiện tại của tôi có chấp nhận được hay thực tiễn tốt hay không. IDE của tôi (IDEA) dường như nghĩ rằng nó không phải là:

var MyModel = Backbone.Model.extend({ 

initialize:function(){ 
    var myGlobalVar, myOtherGlobalVar;//marked as unused local variable 
}, 

myFunction:function() {   
     myGlobalVar = value;//marked as implicitly declared 
     model.set({"mrJson": {"email": myGlobalVar}}); 
     model.save(); 
    }); 
    } 
}, 

myOtherFunction:function() {   
     myOtherGlobalVar = otherValue;//marked as implicitly declared 
     model.set({"mrJson": {"email": myGlobalVar, "other": myOtherGlobalVar}}); 
     model.save(); 
    }); 
    } 
} 
} 

tôi đã cố gắng tuyên bố globals ngầm tuyên bố, nhưng điều đó dẫn đến họ không được truy cập từ các chức năng Othe.

Có cách nào thích hợp để xử lý các biến toàn cục này trong backbone.js không?

Trả lời

14

Cách bạn hiện đang khai báo các biến, chúng nằm trong hàm khởi tạo phạm vi, thay vì đối tượng Phạm vi MyModel. Để xác định các biến là Biến mô hình (có thể truy cập tất cả các chức năng đối tượng):

var MyModel = Backbone.Model.extend({ 

myGlobalVar: null, 
myOtherGlobalVar: null, 

initialize:function(){ 
    console.log(this.myGlobalVar) 
}, 
... 
+0

Cảm ơn bạn! Đó là rõ ràng cú pháp tôi đang tìm kiếm. – Sephie

+0

Tôi đang đối mặt với một tình huống tương tự và trong khi giải pháp trên dường như là OK, vấn đề của tôi phải làm nhiều hơn với sự hiểu biết về cách trình phân tích cú pháp js hoạt động thay vì cách hoạt động của đường trục. Tôi đã tạo một ví dụ mã KHÔNG CHỨC NĂNG jsbin (để làm cho nó chức năng mã sẽ trở thành compicated) .Đây là liên kết http://jsbin.com/tufeh/1/ Khi dropfrom được gọi là selestrt nhận được một giá trị (nó là một dấu thời gian unix) ... khi changefrom được gọi là (thay đổi sự kiện) mặc dù selestrt không được xác định. Tôi có thể làm gì trong tình huống như thế này? Tôi hy vọng bạn có hình ảnh ... –

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