簡體   English   中英

將范圍傳遞給函數不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM