2015-10-20 80 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); 
} 
}; 
相關問題