javascript - AngularJS:将 HTML 中嵌入的 JSON 传递给 Controller

标签 javascript angularjs dependency-injection

我将搜索结果直接嵌入到 HTML 页面中以节省往返时间。目前我执行以下操作:

<script>
  var embeddedResults = { /* rendered by server */ };

  var app = angular.module("MyApp", []);
  app.controller("MyController", ["$scope", function($scope) {
    $scope.results = embeddedResults;
    // ...
  }]);
</script>

这样做的正确方法是什么?另外:这种方式是否允许我将 embeddedResults 变量放在页面的最后,即即使在 Controller 定义之后?

最佳答案

方法 1 - 使用 $window 全局

<script>
  var embeddedResults = { /* rendered by server */ };

  var app = angular.module("MyApp", []);
  app.controller("MyController", ["$scope", "$window", function($scope, $window) {
    $scope.results = $window.embeddedResults; // using $window will enable you to mock it in tests
    // ...
  }]);
</script>

方法 2 - 常量/值

<script>  
  var app = angular.module("MyApp", []);
  app.constant('embeddedResults', { /* rendered by server */ }); // can also be value
  app.controller("MyController", ["$scope", "embeddedResults", function($scope, embeddedResults) {
    $scope.results = embeddedResults;
    // ...
  }]);
</script>

关于javascript - AngularJS:将 HTML 中嵌入的 JSON 传递给 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31660399/

相关文章:

typescript - 将接口(interface)列表注入(inject)类 - NestJs

.net - 如何从 CaSTLe Windsor 配置中读取/解析属性

Javascript 交换图像翻转

javascript - 将两个选项对象与函数合并

javascript - window.open 在 background.js 中的 firefox 扩展?

javascript - 嵌套的 JSON 不显示在 ng-repeat 中

javascript - 计算机上文件中的视频无法使用 <video> HTML5 播放

javascript - 如何使单元格中的表格成为变量?

javascript - angularjs 指令 : how communicate between link and controller?

c# - 使用依赖注入(inject)将字典保存在应用程序中的位置