这是我的控制器。
app.controller('ChatController', function ()
{
this.username = '';
this.setUsername = function (username)
{
this.username = username;
};
socket.on('success', (function (controller)
{
return function(username)
{
$('#password_page').fadeOut();
controller.setUsername(username);
$('#chat_page').removeClass('hidden').show();
};
})(this));
});
问题是当事件'success'以用户名correclty作为参数传递时,我的控制器中的this.username
不会更新。
我该如何解决这个问题?
答案 0 :(得分:0)
Angular并不知道soketio事件,因此当它发生时不会运行摘要周期。您需要手动触发此过程:
app.controller('ChatController', function ($scope) {
this.username = '';
this.setUsername = function (username) {
this.username = username;
};
socket.on('success', (function (controller) {
return function (username) {
$('#password_page').fadeOut();
controller.setUsername(username);
$('#chat_page').removeClass('hidden').show();
$scope.$apply();
};
})(this));
});
关于代码中的另一个问题。我建议在你的项目中摆脱jQuery,或者至少将它的用法仅限于指令,更多的是Angular-way。像这样的行:
$('#password_page').fadeOut();
使用Angular应用程序