2015-07-19 15 views
6

Tôi đang học cách viết ứng dụng bằng NativeScript. Tôi tin rằng cách tốt nhất để học là làm. Vì lý do đó, tôi đang xây dựng một ứng dụng cơ bản.Thêm một biến toàn cục/chức năng trong JavaScript (cụ thể là NativeScript)

Trong ứng dụng này, tôi đang cố tạo một hàm và một biến mà tôi có thể truy cập trên tất cả các kiểu xem và mã khác trong ứng dụng. Trong một nỗ lực để làm điều này, tôi nghĩ rằng tôi sẽ thêm một chức năng và biến trên đối tượng ứng dụng.

Trong NativeScript, ứng dụng được khởi tạo bằng cách sử dụng đoạn mã sau:

app.js

var application = require("application"); 
application.mainModule = "main-page"; 
application.start(); 

I figured tôi có thể heo con lại về vấn đề này và thêm một chức năng có thể nhìn thấy trên toàn cầu và biến như vậy :

application.prototype.myFunction = function() { 
    console.log('I made it!'); 
}; 
application.myVariable = 'some value'; 

Sau đó, trong các kiểu xem hoặc mã khác, tôi có thể thực hiện một số việc như sau:

views/home.js

application.myFunction(); 
console.log(application.myVariable); 

Tuy nhiên, khi tôi chạy mã này, tôi nhận được một lỗi mà nói rằng ứng dụng là không xác định. Tôi không hoàn toàn hiểu điều này. Tôi nghĩ rằng vì ứng dụng được xác định/khởi tạo trong app.js nên ứng dụng sẽ hiển thị trên toàn cầu. Tuy nhiên, nó dường như không. Đồng thời, tôi không biết phải làm gì.

Trả lời

12

Sử dụng không gian tên toàn cầu. Trong app.js bạn, mã:

var application = require("application"); 
application.mainModule = "main-page"; 

global.myVariable = 'some value'; 

application.start(); 

Sau đó, bạn có thể sử dụng global.myVariable bất cứ nơi nào trong ứng dụng của bạn.

+1

Tôi biết điều này là cũ, nhưng có bao nhiêu cau mày khi điều này? (vì dường như cách duy nhất để chia sẻ dữ liệu mà không phải viết lại tất cả các quan sát được) – MoshMage

+0

Chúng ta có thể quan sát toàn cầu và propertyChangeEvent được không? –

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