【问题标题】:angular variable initialization角度变量初始化
【发布时间】:2023-03-04 01:25:01
【问题描述】:

我在角度控制器中有一个变量,$scope.abc。

我有 Sails 作为后端。

$scope.abc 的初始值可以由后端在生成页面时确定。页面显示给用户后,$scope.abc 可能会被用户更改,也可能不会被用户更改。

我可以让后端生成一个完整的静态页面,并让 Angular 查询后端以获取 $scope.abc 的初始值。我觉得没有必要,因为初始值可以在页面生成时确定,并且应该作为页面的一部分。

问题是:生成网页时如何初始化$scope.abc?有什么方法可以向 Angular js 文件提供数据,类似于 res.view("",data)?

【问题讨论】:

  • 只需从角度控制器制作 $http 并从中分配 $scope.abc
  • 使用 $http 是否需要 Angular 向后端发出第二个 http 请求以初始化 $scope.abc?
  • 如果您已有数据,则无需再发出一个请求。

标签: javascript angularjs sails.js


【解决方案1】:

你在这里真的没有太多选择。您可以再发出一个 ajax 请求并加载数据。但是,如果在索引页面加载期间数据已经可用,那我就不理想了。在这种情况下,您可以将其注入额外的脚本标签并从那里访问它。

<script>
    // Make sure data is JSON encoded.
    window.appConfig = <%= data %>;
</script>
<script src="angular.js"></script>
<script src="app.js"></script>

然后我会在应用程序中设置一个常量服务来存储数据:

angular.module('app').constant('appConfig', {data: window.appConfig});

这样你以后可以以更 Angular 的方式使用它,例如:

angular.module('app').controller(function($scope, appConfig) {
    $scope.config = appConfig.data.userId;
});

如果您担心全局变量 appConfig 的存在,您可以在已设置常量时在应用程序运行块中将其删除。

【讨论】:

    猜你喜欢
    • 2016-03-07
    • 2022-01-01
    • 2017-09-05
    • 2020-12-22
    • 2018-07-05
    • 1970-01-01
    • 1970-01-01
    • 2018-10-10
    • 2019-05-17
    相关资源
    最近更新 更多