define(function (require, exports, module) { var EventObject = require("../../platform/EventObject.js"); var servers = null; var container = $("#chat_server_select"); var template = container.find(">script").doT(); var serverNodeContainer = container.find(">article"); var ep = require("../../platform/extensionPort.js"); var port = ep.port; var renderServerNodeList = function () { //推荐房间 serverNodeContainer.empty(); var roomRecommand = _.where(servers, { recommand: true }); if (roomRecommand && roomRecommand.length) serverNodeContainer.append(template({ category: "推荐房间", list: roomRecommand })); var roomGlobal = _.where(servers, { category: 0 }); if (roomGlobal && roomGlobal.length) serverNodeContainer.append(template({ category: "全国房间", list: roomGlobal })); var roomPrivate = _.where(servers, { category: 1 }); if (roomPrivate && roomPrivate.length) serverNodeContainer.append(template({ category: "地区/专线房间", list: roomPrivate })); }; var ServerNodeSelect = function () { EventObject.apply(this); var that = this; this.showRoomSelect = function () { $("#chat_frame>section").removeClass("chat-page-current"); $("#chat_server_select").addClass("chat-page-current"); that.fireEvent("roomSelectShown"); }; this.exitRoomSelect = function () { $("#chat_frame").removeClass("open"); that.fireEvent("roomSelectHide"); }; port.on("responseServer", function (e, serverList) { servers = serverList; if (!servers) { //TODO 无法加载服务器列表 } else { that.fireEvent("chatServerLoaded", servers); //渲染列表 renderServerNodeList(); } }); this.loadServers = function () { port.postMessage("getChatServerStatus"); }; return this; }; ServerNodeSelect.prototype = Object.create(EventObject); ServerNodeSelect.constructor = ServerNodeSelect; var instance = new ServerNodeSelect(); (function ui() { $("#chat_server_select > footer >button").click(instance.exitRoomSelect); $(document).on("click", "#chat_server_select article li", function() { var id = this.dataset.id; var server = _.findWhere(servers, { id: id }); if (!server) return; instance.fireEvent("enterRoot", server); }); })(); return instance; });