Javascript 如何在Jquery中访问AngularJS?
最近我开始将AngularJS集成到项目中。 在此之前,我已经用JavaScript编写了许多原型和单个函数,例如(Node.js+socket.io功能) 今天,我无法用清晰的JavaScript与AngularJS通信: JS:Javascript 如何在Jquery中访问AngularJS?,javascript,jquery,angularjs,Javascript,Jquery,Angularjs,最近我开始将AngularJS集成到项目中。 在此之前,我已经用JavaScript编写了许多原型和单个函数,例如(Node.js+socket.io功能) 今天,我无法用清晰的JavaScript与AngularJS通信: JS: socket.on('message', function (data) { showSystemMessage(); } function showSystemMessage(message) { // Increment here Angu
socket.on('message', function (data) {
showSystemMessage();
}
function showSystemMessage(message) {
// Increment here AngularJS $scope.messagesCnt++ ?;
}
.controller('MessagesController', ['$scope', function($scope) {
$scope.messagesCnt = 0;
}])
AngularJS:
socket.on('message', function (data) {
showSystemMessage();
}
function showSystemMessage(message) {
// Increment here AngularJS $scope.messagesCnt++ ?;
}
.controller('MessagesController', ['$scope', function($scope) {
$scope.messagesCnt = 0;
}])
HTML:
{{messagesCnt}
请注意方法:
showSystemMessage()
如果您的函数showSystemMessage
不在控制器作用域内,则无法更新作用域变量messagesCnt
。(有,但不是直截了当的。)
相反,您的这个函数应该驻留在angular服务中,然后在任何您想要的事件中,您都可以从您的服务向控制器广播一条消息以更新其计数值。理想情况下,您应该遵循@Yaseer所说的,但我知道,您使用的是Socket IO本机实现[周围没有棱角分明的包装物] 因此,您有两种解决方案:
angular.element("#your-identifier-id-here").scope().messagesCnt++;
在控制器中编写套接字侦听器代码
function appcontroller($scope){
socket.on('message', function (data) {
showSystemMessage();
}
function showSystemMessage(message) {
$scope.$apply(function(){
// Increment here AngularJS $scope.messagesCnt++ ?;
});
}
}
您是否收到任何错误?角度文件中是否定义了
showSystemMessage()
?否则它将无法访问$scope