2015-10-20 3 views
1

Я пишу проверку прототипа e2e. У меня есть более одного файла .js (spec.js). Мне нужно вызвать один файл из другого. Может ли кто-нибудь предложить мне идею.Как вызвать один .js-файл из другого .js-файла?

+1

Если вы используете транспортир с узлом, вы можете просто ' требовать (»./ spec.js')'. – stekhn

ответ

0

Вместо этого вы должны использовать службу, чтобы избежать путаницы контроллеров с кодом, который вызывает функции в других контроллерах. Если вы используете общие функции, просто определите их в службе и при необходимости добавьте эту службу.

angular.module('myApp', []) 
    .factory('myService', function() { 
    return { 
     sharedFunction: function (foo, bar) { 
     return foo + bar; 
     } 
    } 
}; 

Answer Source (also possible duplicate of this question)

Я не делаю угловой, так что это не может быть ответом вам нужно, но плохо оставить ссылку здесь как раз в надежде, что он станет полезным (ответ первоначально thomastuts)

+0

Я использую транспортир с узлом. Мой второй файл (.js) будет использовать вывод первого файла. Это возможно, если я использую «require». – Noor

+0

Да, позвольте мне написать еще один ответ с решением –

+0

Позвольте мне задать свой вопрос следующим образом. Мой первый .js возвращает массив как результат (col [0]). Если я использую тот же .js-файл, я просто вызываю вывод первого файла во втором файле. Но как это сделать, если я использую два файла .js. Как я должен подавать вывод первого файла во второй файл ... – Noor

1

Решение этой проблемы простое - это реализовать модуль Exports, он позволяет вам требовать определенные файлы сценариев java в другом каталоге или в той же папке. Это простой способ - я написал формат для использования этого взгляда на этот github repo i, созданный для проекта, он реализует то, что вы пытаетесь выполнить.

Для файла JavaScript вы хотите импортировать использовать формат, как этот

var bindObjects; 
var authServer; 
var socketData = []; 

var log_ValidConnections = true; 
var log_InvalidConnections = true; 
var log_GetFriendsRequest = false; 

// For imports, to get the functions in another file 
module.exports = { 
    init : function(binds) { 
    bindObjects = binds; 
    authServer = bindObjects['AUTH.Server']; 

    console.log("SocketServer - Syncing with AUTH Servers"); 
    initServer(bindObjects['APP.SOCKET.IO']); 
    console.log("SocketServer - Loaded"); 
}, 

setBinding : function(data) { 
    bindObjects = data; 
}, 

getSocketData : function() { 
    return socketData; 
}, 

getSocket : function(username) { 
    return getSocket(username); 
}, 

getSocketData : function(username) { 
    return getData(username); 
} 
}; 

и для модуля импорта выше JavaScript

function setBinding(callInit) { 
    var socketServer  = require("./sockets"); // Dont add .js 
    var bindObjects   = { 
    'WEB.Server': webServer, 
    'CHAT.Server': chatServer, 
    'AUTH.Server': authServer, 
    'SOCKET.Server': socketServer, 
    'JSON.WEB.Tokens': jsonWeb, 
    'APP.Instance': app, 
    'APP.Http': http, 
    'APP.SOCKET.IO': io, 
    'APP.EXPRESS': express, 
    'APP.DEBUG': debugMode 
}; 

if(callInit) { 
    webServer.init(bindObjects); 
    chatServer.init(bindObjects); 
    authServer.init(bindObjects); 
    socketServer.init(bindObjects); 
} else { 
    webServer.setBinding(bindObjects); 
    chatServer.setBinding(bindObjects); 
    authServer.setBinding(bindObjects); 
    socketServer.setBinding(bindObjects); 
} 
} 

// to make the module re-bindable create a exports 
module.exports = { 
rebindObjects : function() { 
    setBinding(false); 
} 
}; 
Смежные вопросы