【问题标题】:Laravel 5 - Get AngularJS controller variable in PHP clauseLaravel 5 - 在 PHP 子句中获取 AngularJS 控制器变量
【发布时间】:2017-02-24 09:15:06
【问题描述】:

如何在 PHP 子句中获取 AngularJS 控制器变量?

我尝试了<?php $user = User::find({{ message.from_id }})?>,但它不起作用。

message.blade.php

<div ng-repeat="message in current.messages">

    <?php $user = User::find({{ message.from_id }})?> //not works

    <div>
        <span>User @{{ message.from_id }}</span> //it works
    </div>
</div>

【问题讨论】:

    标签: angularjs laravel laravel-5 laravel-5.2 blade


    【解决方案1】:

    当您创建角度模块时,会像这样更改角度语法:

    angular.module("moduleName",[],function($interpolateProvider)    
    {
        $interpolateProvider.startSymbol("<%");
        $interpolateProvider.endSymbol("%>");
    }) 
    

    现在您可以在blade.php 中使用&lt;% $scope.VarNm %&gt;&lt;% VarNm %&gt; 访问角度

    在你的情况下使用像

     <?php 
        $id = "<%message.from_id%>";
        $user = User::find($id)
     ?>
    

    【讨论】:

    • 嗯...但是我该如何添加呢?我应该使用 ng-... 分配 .module 吗?
    • 是的。当您为 Angular 创建应用程序模块时,通过 $interpolateProvider 并更改默认语法。
    • 我是 AngularJS 的初学者。我有一个已经在运行的控制器和功能。我不知道我是否明白。在这种情况下,如果我想使用 $interpolateProvider?,我必须更改 AngularJS 模块上的所有 AngularJS 控制器
    • 你有哪个 Angular 版本?
    • 太棒了!那么你也可以在创建应用程序模块时设置 angularjs 语法
    【解决方案2】:

    您可以使用@ 符号通知 Blade 渲染引擎一个表达式应该保持不变

    <div ng-repeat="message in current.messages">
        {{ $user_id = @{{ message.from_id }} }} 
        {{ $user = User::find($user_id) }}
    </div>
    

    【讨论】:

    • php 变量只会在页面渲染时分配一次,并且不能像 JavaScript 变量那样重新分配
    猜你喜欢
    • 2016-01-31
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-05
    • 1970-01-01
    相关资源
    最近更新 更多