Javascript 将作用域传递给函数不起作用
我不熟悉Javascript 将作用域传递给函数不起作用,javascript,angularjs,Javascript,Angularjs,我不熟悉angular.js,而$scope在控制器内部的函数中不起作用 <div>{{logMsg}}</div> <script type="text/javascript"> angular.module("app",[] ).controller("myController", function($scope){ $scope.onConnect = function(status){ $s
angular.js
,而$scope
在控制器内部的函数中不起作用
<div>{{logMsg}}</div>
<script type="text/javascript">
angular.module("app",[] ).controller("myController", function($scope){
$scope.onConnect = function(status){
$scope.logMsg = "connecting...";
}
function onMessage(msg) {
console.log('message');
$scope.logMsg = "message...";
}
});
</script>
{{logMsg}
角度.module(“app”,[]).controller(“myController”,函数($scope){
$scope.onConnect=功能(状态){
$scope.logMsg=“连接…”;
}
函数onMessage(msg){
console.log('message');
$scope.logMsg=“消息…”;
}
});
将显示
连接…
,但不显示消息…
。但是我在控制台中收到了消息。我做错了什么。提前感谢。如果您想使用$scope
最好使用“array”符号注入它
angular.module(“app”、[]).controller(“myController”、['$scope',function($scope){
不确定您希望$scope如何存在,该函数不在控制器中,并且$scope未注入onMessage
函数
也许你的意思是onMessage
在控制器中,或者从控制器调用它,传递$scope
?如果你想使用$scope
你最好使用“数组”符号注入它
angular.module(“app”、[]).controller(“myController”、['$scope',function($scope){
不确定您希望$scope如何存在,该函数不在控制器中,并且$scope未注入onMessage
函数
可能您的意思是onMessage
在控制器中,或者通过$scope
从控制器调用它?您的$scope。onMessage
中的logMsg
不在控制器的范围内。请参阅下面的更正
angular.module("app", []).controller("myController", ['$scope',function($scope) {
$scope.logMsg = "";
$scope.onConnect = function(status) {
$scope.logMsg = "connecting...";
}
$scope.onMessage = function(msg) {
console.log('message');
$scope.logMsg = "message...";
};
}]);
onMessage
中的$scope.logMsg
不在控制器的范围内。请参阅下面的更正
angular.module("app", []).controller("myController", ['$scope',function($scope) {
$scope.logMsg = "";
$scope.onConnect = function(status) {
$scope.logMsg = "connecting...";
}
$scope.onMessage = function(msg) {
console.log('message');
$scope.logMsg = "message...";
};
}]);
$scope在本例中是超出范围的
<script type="text/javascript">
angular.module("app",[] )
.controller("myController", function($scope){ <- scope of $scope is from here
$scope.onConnect = function(status){
$scope.logMsg = "connecting...";
}
}); <- to here
function onMessage(msg) {
console.log('message');
$scope.logMsg = "message..."; <- no $scope here
}
</script>
角度模块(“应用程序”,[])
.controller(“myController”,函数($scope){$scope在本例中为超出范围
<script type="text/javascript">
angular.module("app",[] )
.controller("myController", function($scope){ <- scope of $scope is from here
$scope.onConnect = function(status){
$scope.logMsg = "connecting...";
}
}); <- to here
function onMessage(msg) {
console.log('message');
$scope.logMsg = "message..."; <- no $scope here
}
</script>
角度模块(“应用程序”,[])
.controller(“myController”,function($scope){您需要将$scope注入onMessage
函数以获取$scope的引用。在这种情况下,$scope
仅在controller方法的作用域内可用,而不在onMessage
方法内
angular.module(“app”,[]).controller(“myController”,函数($scope,$timeout){
$scope.onConnect=功能(状态){
$scope.logMsg=“连接…”;
}
$scope.onConnect();
$timeout(onMessage($scope),2000);
});
函数onMessage($scope){
返回函数(msg){
console.log('message');
$scope.logMsg=“消息…”;
}
}
{{logMsg}
您需要将$scope注入onMessage
函数以获取$scope的引用。在这种情况下,$scope
仅在控制器方法的作用域内可用,而不在onMessage
方法内
angular.module(“app”,[]).controller(“myController”,函数($scope,$timeout){
$scope.onConnect=功能(状态){
$scope.logMsg=“连接…”;
}
$scope.onConnect();
$timeout(onMessage($scope),2000);
});
函数onMessage($scope){
返回函数(msg){
console.log('message');
$scope.logMsg=“消息…”;
}
}
{{logMsg}
如何调用onMessage
函数?很可能$scope
不在范围内(讽刺的是)。我认为@Jamiec是正确的。$scope.logMsg
在onMessage
函数不在控制器的范围内。您从哪里调用onMessage()?实际上,我正在处理xmpp
,从那里它正在调用它..控制台正在工作,而不是$scope请将该代码添加(至少部分)到问题中?只需要查看执行流程。如何调用onMessage
呢?很有可能$scope
是(讽刺地)不在范围内。我认为@Jamiec是正确的。onMessage
函数中的$scope.logMsg
不在控制器的范围内。您从哪里调用onMessage()?实际上我正在处理xmpp
,从那里它正在调用它。。控制台正在工作,而不是$scope请添加(至少部分)问题的代码?只需要查看执行流程。当您在开发模式下使用内置注入(如$scope
)时,您不必像那样指定注入-这是一个很好的实践,但除非您激活严格模式,否则它不会改变问题上下文中的任何内容。哦,是的,您是对的,似乎不是问题的关键问题已解决解决问题我真的不认为这是注射问题。如果是这样的话,什么都不起作用,但这只是一个回调,没有正确更新范围。耶,我看到了我的错误,并更新了答案。但也吹毛求疵注射,因为没有它缩小可能会被打破,他会回来的你当您在开发模式下使用内置注入(如$scope
)时,不必像那样指定注入-这是一个很好的实践,但除非您激活严格模式,否则它不会改变问题上下文中的任何内容。哦,是的,您是对的,似乎没有解决问题。我真的不认为这是一个i注射问题。如果是这样的话,什么都不起作用,但这只是一个回调,没有正确更新作用域。是的,我看到了我的错误,之前更新了答案。但也对注射吹毛求疵,因为如果没有它,缩小可能会被破坏,他会回到这里。我该怎么办