我已经尝试过这些方法,发现它们不能满足我的需要。就我而言,我需要将 json 渲染的服务器端注入页面的主模板,因此当它加载和角度初始化时,数据已经存在并且不必检索(大型数据集)。
我找到的最简单的解决方案是执行以下操作:
在应用程序之外的 Angular 代码中,模块和控制器定义添加了一个全局 javascript 值 - 此定义必须在定义 Angular 内容之前出现。
例子:
'use strict';
//my data variable that I need access to.
var data = null;
angular.module('sample', [])
然后在你的控制器中:
.controller('SampleApp', function ($scope, $location) {
$scope.availableList = [];
$scope.init = function () {
$scope.availableList = data;
}
最后,您必须初始化所有内容(顺序很重要):
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js"></script>
<script src="/path/to/your/angular/js/sample.js"></script>
<script type="text/javascript">
data = <?= json_encode($cproducts); ?>
</script>
最后初始化你的控制器和初始化函数。
<div ng-app="samplerrelations" ng-controller="SamplerApp" ng-init="init();">
通过这样做,您现在可以访问填充到全局变量中的任何数据。