Я создаю функцию чата в своем веб-приложении, и я собираюсь создать функцию чата между зарегистрированными клиентами. Вот мой экран из приложения, чтобы показать, что именно я хочу, чтобы решитьУгловой чат-клиент - 2 вида с одним контроллером
Как вы можете видеть, я получил список интернет-пользователей, хранящихся в области видимости в боковой панели. Его созданный как частичный вид в моем Asp.Net с .cshtml и я отображаю содержимое в «белом ящике» с использованием угловой маршрутизации.
Проблема в том, что я использую один и тот же контроллер дважды, и он создает новую область для каждого html, поэтому я получил данные на боковой панели, но в своем представлении содержимого у меня нет данных. Я думаю о передаче моих данных в корнеплод, но я не знаю, хорошая ли это идея.
Так что мой вопрос. Есть ли что-то, как я могу клонировать мои данные с одного контроллера на другой или как я могу решить это без изменения функциональности, и если я смогу контролировать свои представления с помощью одного контроллера.
Вот мой PrivateChatController.js
(function() {
'use strict';
app.controller('PrivateChatController', ['$rootScope', '$scope', 'SignalRService', '$location', 'PrivateChatService', PrivateChatController]);
function PrivateChatController($rootScope, $scope, SignalRService, $location, PrivateChatService) {
//angular stuff
$scope.online_users = [];
$scope.isChatHidden = false;
$scope.openPrivateChatWindow = function (index) {
// $scope.isChatHidden = true;
angular.forEach($scope.online_users, function (value, key) {
if (index == key) {
$rootScope.currentPrivateChatUser = ({
UserName: value.UserName,
ConnectionId: value.connectionId,
});
$location.path("/details/" + value.UserName);
}
});
};
$scope.closePrivateChatWindow = function (index) {
$scope.isChatHidden = false
};
//signalR stuff
var chatHub = $.connection.chatHub;
$.connection.hub.logging = true;
chatHub.client.foo = function() { };
registerClientMethods(chatHub);
$.connection.hub.start()
.done(function(){ console.log('Now connected, connection ID=' + $.connection.hub.id); })
.fail(function() { console.log('Could not Connect!'); });
function registerClientMethods(chatHub) {
//user object
chatHub.client.newOnlineUser = function (user) {
var newUser = ({
connectionId: user.ConnectionId,
UserName: user.UserName
});
$scope.online_users.push(newUser);
$scope.$apply();
};
//compare scope online users with server list of online users
chatHub.client.getOnlineUsers = function (onlineUsers) {
//loop through scope
angular.forEach($scope.online_users, function (scopeValue, scopeKey) {
//loop through received list of online users from server
angular.forEach(onlineUsers, function (serverListValue, serverListKey) {
if (!(serverListValue.ConnectionId == scopeValue.connectionId)) {
var newUser = ({
connectionId: serverListValue.ConnectionId,
UserName: serverListValue.UserName
});
$scope.online_users.push(newUser);
$scope.$apply();
}
})
})
};
chatHub.client.onUserDisconnected = function (id, user) {
var index = 0;
//find out index of user
angular.forEach($scope.online_users, function (value, key) {
if (value.connectionId == id) {
index = key;
}
})
$scope.online_users.splice(index, 1);
$scope.$apply();
};
}};})();
Хорошо, буду проверить это, спасибо за этот совет – Martin