[英]passing scope to function is not working
我是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>
顯示正在connecting...
,但不顯示message...
但是我在控制台中收到了該message
。 我在做什么錯。 提前致謝。
如果要使用$scope
,最好使用“數組”表示法注入它
angular.module("app",[] ).controller("myController", ['$scope', function($scope){
不知道您希望$ scope如何存在,該函數不在控制器中,並且$ scope沒有注入到onMessage
函數中。
也許您是說onMessage
在控制器中,還是從傳遞$scope
的控制器中調用它?
在這種情況下,$ scope out of 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>
解決方法是使用與onConnect相同的方式編寫onMessage。 或者將$ scope分配給另一個不建議使用的變量。
您在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...";
};
}]);
您需要向onMessage
函數注入$ scope以獲得$ scope的引用。 在這種情況下, $scope
僅在控制器方法的范圍內可用,而在onMessage
方法內部不可用。
angular.module("app",[] ).controller("myController", function($scope, $timeout){ $scope.onConnect = function(status){ $scope.logMsg = "connecting..."; } $scope.onConnect(); $timeout(onMessage($scope), 2000); }); function onMessage($scope) { return function(msg){ console.log('message'); $scope.logMsg = "message..."; } }
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> <div ng-app="app" ng-controller="myController">{{logMsg}}</div>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.