Ember.js 为什么我必须指定model.name而不仅仅是name?

Ember.js 为什么我必须指定model.name而不仅仅是name?,ember.js,Ember.js,为什么我必须在下面的模板中指定model.name?我的印象是控制器装饰了它的模型。我想我应该能够在下面的模板中执行{{name}}。但它只有在执行{{model.name}时才有效 非常感谢您的帮助。谢谢 app.js App = Ember.Application.create({}); App.Router.map(function () { this.resource("posts", { path: "/" }, function () { this.route("new

为什么我必须在下面的模板中指定model.name?我的印象是控制器装饰了它的模型。我想我应该能够在下面的模板中执行{{name}}。但它只有在执行{{model.name}时才有效

非常感谢您的帮助。谢谢

app.js

App = Ember.Application.create({});

App.Router.map(function () {
  this.resource("posts", { path: "/" }, function () {
    this.route("new", { path: "/new" });
    this.route("post", { path: ":post_id" });
  });
  this.route("another", { path: "/another" });
});

App.PostsRoute = Ember.Route.extend({
  model: function(params) {
    return [{ name: "foo" },{ name: "bar" },{ name: "zoo" }]
  }
});

App.PostsPostRoute = Ember.Route.extend({
  model: function(params) {
    console.log('model');
    return Ember.Object.create({ name: "MODEL name" })
  }
});

App.PostsPostController = Ember.Controller.extend({
  selected: false
});
index.html

<!doctype html>
<html>
<head>
  <meta charset="utf-8">
  <title>Ember Test</title>

</head>
<body>

<script type="text/x-handlebars" id="posts">
  posts here
  {{#each controller}}
  {{name}}
  {{/each}}
  {{ outlet }}
</script>

<script type="text/x-handlebars" id="posts/index">
  posts index here
</script>

<script type="text/x-handlebars" id="posts/new">
  posts new here
</script>

<script type="text/x-handlebars" id="posts/post">
  here is a post???
  {{ model.name }}
  {{ selected }}
</script>

<script src="jquery-1.10.2.js"></script>
<script src="handlebars.js"></script>
<script src="ember.js"></script>
<script src="app.js"></script>
</body>
</html>

余烬试验
张贴在这里
{{{#每个控制器}}
{{name}}
{{/每个}}
{{outlet}}
这里的职位索引
这里有新帖子
这里有一个帖子???
{{model.name}
{{selected}}

发生这种情况是因为您的
PostsPostController
正在扩展
Ember.Controller
,要使其正常工作,您需要扩展
Ember.ObjectController

App.PostsPostController = Ember.ObjectController.extend({
  selected: false
});
在文档中,这是Ember.ObjectController的定义:

ObjectController是Ember控制器层的一部分。它是 用于包装单个对象,代理未处理的获取 并设置为基础内容对象,以及转发未处理的内容 行动试图达到目标


我将您的示例放在这个JSFIDLE中,请看一看。

发生这种情况是因为您的
PostsPostController
正在扩展
Ember.Controller
,要使其正常工作,您需要扩展
Ember.ObjectController

App.PostsPostController = Ember.ObjectController.extend({
  selected: false
});
在文档中,这是Ember.ObjectController的定义:

ObjectController是Ember控制器层的一部分。它是 用于包装单个对象,代理未处理的获取 并设置为基础内容对象,以及转发未处理的内容 行动试图达到目标

我把你的样品放在这个盒子里,请看一下