【问题标题】:Laravel/Angular: passing data within php page to angularjsLaravel/Angular:将 php 页面中的数据传递给 angularjs
【发布时间】:2014-08-11 05:28:18
【问题描述】:

我有以下 laravel html/blade 页面,我想传入一个 storeid,然后可以通过 angular 获取它,然后用于获取和执行一些操作。

下面是我现在如何完成它,但有没有更好的方法来产生同样的效果?

刀片部分

<div ng-controller="storeChartCtrl" data-storeid="{{ $store['id'] }}">
    <p>{{ $store['name'] }} Sales</p>
    ...
</div>

角度控制

.controller('storeChartCtrl', ['$scope', 'Store', function($scope, Store){
    //-- get the requested store sales
    var storeid = JQ('#storeChart').data('storeid');

    $log.info(storeid);
    ....

这目前有效,我得到了我的 storeid 值,所以我可以发送到我的工厂来获取数据。

【问题讨论】:

  • 啊,很好的旧 laracasts 到 js 方法,很好。会考虑,但对于这些数据似乎有点矫枉过正(遗憾地说随着应用程序变大)。谢谢可能适用
  • @TheShiftExchange 将此添加为答案,以便我可以标记它,工作,不知道为什么我从一开始就没有想到这个:-)

标签: php angularjs laravel-4


【解决方案1】:

当使用 Angular(甚至只是 jQuery)时,我感谢 @JeffreyWay 提供这个包:

https://github.com/laracasts/PHP-Vars-To-Js-Transformer

【讨论】:

  • 我知道这很旧,但这似乎对我不起作用。脚本正在附加,我可以看到所有数据,但是,角度说它是未定义的。
  • 没关系...我的代码护目镜让我看不到错字。
【解决方案2】:

最终,您正在从服务器渲染一个嵌入了某些数据的 HTML 页面;您可以在 HTML 中嵌入数据,也可以像这样在页面中“渲染”一个充满数据的对象:

<?php
$value = "Hello";
$bob = "Bob";

// template code

<script type="text/javascript">
myData = {             // make it global for easy access
    blah: $value,
    alice: $bob
};
</script>
?>

然后在您的 Angular 控制器中,您可以在纯 JS 中访问该数据,而无需处理数据属性。

.controller('storeChartCtrl', ['$scope', 'Store', function($scope, Store){
    console.log(myData);
})]);

【讨论】:

  • 感谢这一点,它似乎增加了像你这样的全局范围等,而 laracasts php vars to js 是一种方法,特别是当需要通过多个项目时然后数据属性不可行,再次感谢
  • 感谢 laravel 最适合的实现方法,但简单来说它做了类似的事情。 Thaksn 虽然回复了
  • 这个方法完全没问题。我建议对注入的数据进行命名空间,以减少整体全局范围污染。
猜你喜欢
  • 2014-03-24
  • 2011-10-13
  • 2018-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-17
  • 2017-10-14
相关资源
最近更新 更多