2015-10-20 83 views

回答

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

这个问题的解决办法很简单,就是实现模块导出,它允许你在不同的目录或同一个文件夹中需要特定的java脚本文件。这是一个容易实现的方法 - 我已经编写了一个使用这个格式的代码,通过我为该项目创建的这个github repo,它实现了您正在尝试完成的任务。

对于要导入使用的格式是这样

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); 
} 
}; 
相关问题