Javascript 使用Ember.js从Laravel后端加载Mysql数据

Javascript 使用Ember.js从Laravel后端加载Mysql数据,javascript,mysql,ember.js,laravel,ember-data,Javascript,Mysql,Ember.js,Laravel,Ember Data,我在Laravel4中创建了一些restful路由,以便在前端为我的ember.js应用程序提供一些示例数据。我在后端使用Laravel4,并将mysql用作数据库 从mysql服务器加载数据时,我遇到了一个奇怪的错误。如果传递id以检索特定项目的完整信息,则会成功加载来自一个余烬资源/路由的所有内容。。只加载标题,而不加载内容 我想说的是,我在ember应用程序中有两个资源路径:“/about”和“profiles/:profiles_id”/about'从一个表中加载所有条目的列表,但我只显

我在Laravel4中创建了一些restful路由,以便在前端为我的ember.js应用程序提供一些示例数据。我在后端使用Laravel4,并将mysql用作数据库

从mysql服务器加载数据时,我遇到了一个奇怪的错误。如果传递id以检索特定项目的完整信息,则会成功加载来自一个余烬资源/路由的所有内容。。只加载标题,而不加载内容

我想说的是,我在ember应用程序中有两个资源路径:“/about”和“profiles/:profiles_id”/about'从一个表中加载所有条目的列表,但我只显示行的标题。“/profiles/:profiles_id”应该显示标题和内容列,以便对单个选定项目进行更多的描述。如果单击该链接,则先前在该链接处加载的标题只会加载,但会加载到它显示的内容部分

我已在此处包含我的代码:

余烬html页面代码:

<script type="text/x-handlebars">
        <div>
            <nav class="top-bar" data-options="is_hover:true">
                <ul class="title-area">
                    <li class="name">
                      <h1><a href="#">My Ember Site </a></h1>
                    </li>
                </ul>

                <section class="top-bar-section">
                    <ul class="left">
                        <li class="name">{{#linkTo "index"}}Home{{/linkTo}}</li>
                        <li>{{#linkTo "about"}}About{{/linkTo}}</li>
                    </ul>
                </section>
            </nav>
        </div>

        <div class="container">
            <div class="row">
                <h1>Welcome to Ember.js!</h1>
                {{outlet}}
            </div>
        </div>
        </ul>
    </script>

    <script type="text/x-handlebars" data-template-name="index">
        <p>This is Index Page</p>
    </script>

    <script type="text/x-handlebars" data-template-name="about">
        <div class="container">
            <div class="row">
                {{outlet}}
                <ul>
                {{#each controller}}
                    <li>{{#linkTo "profiles" this}}{{title}}{{/linkTo}}</li>
                {{/each}}
                </ul>
            </div>
        </div>
    </script>       

    <script type="text/x-handlebars" data-template-name="profiles">
        <h3>Hello! {{title}}</h3>
        <p>
            {{content}}
        </p>
    </script>   
Laravel Routes.php文件代码:

Route::resource('profiles', 'ProfilesController');
Laravel Profiles控制器代码:

<?php

 class ProfilesController extends \BaseController {

public function index()
{
    return [
                "profiles"=> 
                    Page::all()->toArray()
            ];
}

public function show($id)
{
    return 
    [
        "profile"=> 
                Page::find($id)->toArray()
    ];
}

“content”在Ember中有一个非常特殊的含义:它是控制器模型的另一个名称,它是从路由中提取的

因此,当您尝试渲染
{{content}
时,实际上是在渲染当前控制器的模型。在您的例子中,这是App.Profile模型的记录


要解决此问题,请将App.Profile模型上的“content”属性重命名为类似于“profileContent”的名称,并在模板中使用
{{profileContent}
。不要忘记更新后端模型和数据库字段上的相应属性,或者在将Ember的有效负载提交到服务器时序列化它们,以便服务器仍然将“profileContent”视为“content”。

我确实更改了名称,但现在它没有显示任何内容,没有错误。我刷新了页面,现在只有标题了。我将mysql列中的profileContent、迁移文件、ember模板、everywhere但没有luckinstead中的profileContent的名称更改为profileContent,我再次将其重命名为description,现在它可以正常工作。。但我认为它正在加载上一条路线的内容。。因为装载速度很快。。非常感谢你的帮助没问题!通常情况下,我们使用camelCase Ember模型属性(它是JavaScript,所以这是合理的),并尝试在服务器端强调一些内容。profileContent不起作用的原因是因为Ember的RestaAdapter(您可能正在使用)希望接收带下划线的JSON,而不是camelCased JSON。换句话说,它希望从服务器接收的JSON中包含
profileContent
,而不是
profileContent
。我希望这会有帮助。thanx我不知道
<?php

 class ProfilesController extends \BaseController {

public function index()
{
    return [
                "profiles"=> 
                    Page::all()->toArray()
            ];
}

public function show($id)
{
    return 
    [
        "profile"=> 
                Page::find($id)->toArray()
    ];
}