在服务中使用angular的$ scope.info varible

时间:2016-07-08 16:07:25

标签: javascript angularjs angularjs-scope

我想使用此方法(如果用户正在键入,则输出消息)和服务。该方法是更新信息变量(将其文本设置为“键入”或空白)。

我考虑过将此方法用作角度模型的服务。问题是这个方法需要访问文本变量{{info}},并且位于视图内部(某些html)。

我该怎么做? 我的代码如下...... 感谢

js file

mymodule.controller("cntrlChat", ['$scope','isUserTypingService',
  function($scope,isUserTypingService){ 

  $scope.isUserTyping=function(){
    isUserTypingService($scope.info);

  }

}]);

mymodule.factory('isUserTypingService',['$q','$timeout', function($q,$timeout) {

  var isUserTyping= function(info) {
     runTwoFunctionWithSleepBetweenThem(function (){info='user is typing...';},function (){info='';},3500);
  };

  var runTwoFunctionWithSleepBetweenThem=function(foo1, foo2, time) {
    $q.when(foo1()).then(() => $timeout(foo2, time));
  }
  return isUserTyping;
}]);

的index.html

 <html>
 <head>

    <script data-require="angular.js@1.4.x" src="https://code.angularjs.org/1.4.9/angular.js" data-semver="1.4.9">
    </script>
    <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2.25/angular-route.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/angular-ui-router/0.3.1/angular-ui-router.min.js"></script>
    <script src="/socket.io/socket.io.js"></script>
    <script src="script.js"></script>

    <link rel="stylesheet" type="text/css" href="../css/style.css">
 </head>

 <div ng-app="mymodule" ng-view>
 </div>


 </html>

chat.html

{{info}} 

1 个答案:

答案 0 :(得分:1)

你可以这样做:

<input ng-model="userInput" ng-change="runWhenTyping()" />

在您的控制器中:

$scope.userInput = '';    
$scope.runWhenTyping = function () { isUserTypingService($scope.userInput) }

每次输入runWhenTyping都会被调用,反过来它会调用你的服务。