尝试在函数范围之外的JavaScript中使用变量

时间:2019-01-03 14:28:28

标签: javascript angularjs

我使用node-red并注入了一些json变量,我只能在函数范围内看到它们,如何在函数外部使用它们。

我尝试过angularjs控制器,但是它不起作用,也许我没有正确使用它

<!DOCTYPE html>

<html>

<body>

  <div>{{msg.payload}}</div>

  <div>{{value}}</div><br>

  <div>{{value1}}</div><br>

  <div>{{value2}}</div><br> // i can see the contents

  <md-button ng-click="send({payload:action()})">

  </md-button>

  <script>
    (function(scope) {

      scope.$watch('msg', function(msg) {

        if (msg.payload.image) {

          scope.value2 = msg.payload.image;

        }
        if (msg.payload.text) {

          scope.value1 = msg.payload.text;

        }

        if (msg.payload.volume) {

          scope.value = msg.payload.volume;

        }

        scope.action = function() {

          return [scope.value, scope.value1, scope.value2];

        }

      });

    })(scope);
  </script>

</body>

</html>

1 个答案:

答案 0 :(得分:0)

变量仅在创建它们的范围内(和在“子作用域”中)有效且可访问。

如果您想要一些全局变量,则可以创建一个“全局变量”(仅适用于google)。

但是,由于您使用的是Angular(尽管是旧的“ angularjs”而不是新的“ Angular”版本),所以有更好的方法。在Angular(新的,不知道旧的)中,您可以创建和使用一种称为“服务”的东西。这些是某种可全局访问的对象,可以容纳许多变量和东西,供代码中的其他地方使用。

但是:根据您的用例,您还可以在外部angular-component上创建变量,并将其插入/传递到child组件中。这样既可以使用又可以访问它。了解有关为此目的绑定/ 2方式绑定的更多信息。