Javascript Emberjs itemController/控制器属性绑定

Javascript Emberjs itemController/控制器属性绑定,javascript,ember.js,Javascript,Ember.js,我已经做了一个例子来说明我的问题 绑定在itemController中定义了lastname属性,并且在my items循环中未更新fullname值 我做错了什么?列表中项目的控制器与您编辑属性的控制器不同,因此它永远不会更新。必须将Properylastname指定为模型的属性(如果使用余烬数据,您只需对其使用DS.attr,它将不会被持久化)。如果使用自定义库进行数据持久化,则必须手动删除lastname属性。您可以使用余烬检查器扩展来查看当您单击项目时有5个控制器。列表中的每个项目有4个

我已经做了一个例子来说明我的问题

绑定在itemController中定义了lastname属性,并且在my items循环中未更新fullname值


我做错了什么?

列表中项目的控制器与您编辑属性的控制器不同,因此它永远不会更新。必须将Propery
lastname
指定为模型的属性(如果使用余烬数据,您只需对其使用
DS.attr
,它将不会被持久化)。如果使用自定义库进行数据持久化,则必须手动删除
lastname
属性。您可以使用余烬检查器扩展来查看当您单击项目时有5个控制器。列表中的每个项目有4个,单击时将生成一个。您可以编辑第五个控制器的属性
lastname
。要解决此问题,您可以使用: JavaScript:

App = Ember.Application.create();

App.Router.map(function() {
 this.resource('items', function() {
   this.resource('item', {path: '/:item_id'});
 });
});

App.Model = Ember.Object.extend({
   firstname: 'foo',
   lastname: 'bar',
   fullname: function() {
     return this.get('firstname') + ' ' + this.get('lastname');
   }.property('firstname', 'lastname')
});

App.ItemsRoute = Ember.Route.extend({
  model: function() {
    return [App.Model.create({id: 1}), App.Model.create({id: 2}), App.Model.create({id: 3}), App.Model.create({id: 4})];
  }
});

App.ItemRoute = Ember.Route.extend({
  model: function(params) {
    return this.modelFor('items').findBy('id', +params.item_id);
  }
});
模板:

  <script type="text/x-handlebars">
    <h2>Welcome to Ember.js</h2>
    {{link-to "items" "items"}}
    {{outlet}}
  </script>

  <script type="text/x-handlebars" data-template-name="items">
    <ul>
    {{#each item in model}}
      <li>
        {{#link-to 'item' item.id}}
        {{item.fullname}} {{item.id}}
        {{/link-to}}
      </li>
    {{/each}}
    </ul>

    {{outlet}}
  </script>

   <script type="text/x-handlebars" data-template-name="item">
     {{input value=model.firstname}}
      {{input value=model.lastname}}
      {{model.fullname}}
  </script>

欢迎来到Ember.js
{{链接到“项目”“项目”}
{{outlet}}
    {{{#模型中的每个项目}
  • {{{#链接到'item'item.id} {{item.fullname}{{item.id} {{/链接到}
  • {{/每个}}
{{outlet}} {{input value=model.firstname} {{input value=model.lastname} {{model.fullname}

请记住,不建议使用
ArrayController
ObjectController
,因为它们将来会被弃用

对不起,我的意思是它不起作用。一切都起作用了@MateuszNowak不,没有。您没有看到项目列表中的
fullname
总是
bar
,而不是输入中指定的
lastname
?@Daniel Now?@Jad我想您在这里面临的是设计问题。为什么在itemController中指定
lastname
?如果您想在未在
模型中指定的情况下获取默认值,您可以检查
lastname
是否为空,然后才返回
,但由于您在控制器中指定了它,因此会导致问题@MateuszNowak它可以工作,但出于某种原因@Jad希望在
控制器中指定此属性。