如何在不创建模块的情况下访问AngularJs中的模型变量?

时间:2016-02-04 17:45:08

标签: javascript angularjs angularjs-scope angularjs-ng-model

好的,这里是来自angularjs主页的示例hello world代码:

<!doctype html>
<html ng-app>
  <head>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.9/angular.min.js"></script>
  </head>
  <body>
    <div>
      <label>Name:</label>
      <input type="text" ng-model="yourName" placeholder="Enter a name here">
      <hr>
      <h1>Hello {{yourName}}!</h1>
    </div>
  </body>
</html>

现在,这个模型变量yourName必须已经在某个地方创建(在某个范围内),并且当然无法使用以下方法访问:

<script>
         console.log(yourName);
</script>

我们如何访问此变量,无需创建模块并为其分配控制器,然后使用$scope.yourName

访问它

这不是一个要求,但我当然需要它来清除一些概念。

1 个答案:

答案 0 :(得分:0)

我知道它的邪恶&#34;尝试做你正在做的事情,但是我一直处于遗留代码的类似情况,无法重写。从我收集的内容来看,您希望从Angular外部访问控制器变量。

因为控制器是一个实例,所以你无法从Angular外部访问它。您需要一种方法将数据从内部模型发布到Angular的范围之外。一种方法是在该模型上使用手表,当它发生变化时,将其分配给&#34; window&#34;上的变量。要做到这一点,我建议创建一个单独的Angular服务来进行实际的发布,这样就可以更好地包含罪恶。

$scope.$watch('yourName', function() {
    // If you have a Service to do this, you would use: 
    //myPublishService.publish("yourName", $scope.yourName)
    window.yourName = $scope.yourName;  
});