Javascript 使用Ember.js从Laravel后端加载Mysql数据
我在Laravel4中创建了一些restful路由,以便在前端为我的ember.js应用程序提供一些示例数据。我在后端使用Laravel4,并将mysql用作数据库 从mysql服务器加载数据时,我遇到了一个奇怪的错误。如果传递id以检索特定项目的完整信息,则会成功加载来自一个余烬资源/路由的所有内容。。只加载标题,而不加载内容 我想说的是,我在ember应用程序中有两个资源路径:“/about”和“profiles/:profiles_id”/about'从一个表中加载所有条目的列表,但我只显示行的标题。“/profiles/:profiles_id”应该显示标题和内容列,以便对单个选定项目进行更多的描述。如果单击该链接,则先前在该链接处加载的标题只会加载,但会加载到它显示的内容部分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'从一个表中加载所有条目的列表,但我只显
<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()
];
}