Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从ember.js中的ArrayController影响ObjectController的状态_Javascript_Ember.js - Fatal编程技术网

Javascript 如何从ember.js中的ArrayController影响ObjectController的状态

Javascript 如何从ember.js中的ArrayController影响ObjectController的状态,javascript,ember.js,Javascript,Ember.js,我仍在努力理解如何正确构造一个ember.js应用程序。所以,这可能是一个系统性的问题,我试图解决这个问题。话虽如此,我将尝试用两种不同的方式问同一个问题 在下面的代码示例中,创建记录时,如何将其添加到isEditing属性设置为true的列表中 我可以从特定对象控制器的阵列控制器访问该对象控制器吗 每个任务都有一个视图状态和一个编辑状态。创建新任务时,如何使其最初显示为编辑状态 App.TasksController = Ember.ArrayController.extend({ ac

我仍在努力理解如何正确构造一个ember.js应用程序。所以,这可能是一个系统性的问题,我试图解决这个问题。话虽如此,我将尝试用两种不同的方式问同一个问题

在下面的代码示例中,创建记录时,如何将其添加到isEditing属性设置为true的列表中

我可以从特定对象控制器的阵列控制器访问该对象控制器吗

每个任务都有一个视图状态和一个编辑状态。创建新任务时,如何使其最初显示为编辑状态

App.TasksController =  Ember.ArrayController.extend({
  actions: {
    createTask: function(){
      var task = this.store.createRecord('task');
      task.save();
    }
  }
});

App.TaskController = Ember.ObjectController.extend({
  isEditing: false,

  actions: {
    toggleEditing: function(task) {
      if(this.isEditing){
        task.save();
      }
      this.set('isEditing', ! this.isEditing ); 
    }
  } 
});


<script type="text/x-handlebars" data-template-name="tasks">
  <ul>
    {{#each task in controller}}
      {{render "task" task}}
    {{/each}}
    <li {{action "createTask"}} >
     New Task
    </li>
  </ul>
</script>

<script type="text/x-handlebars" data-template-name="task">
  <li {{action "toggleEditing" task on="doubleClick"}} >
    {{#if isEditing }}
      {{textarea value=title cols="80" rows="6"}}
    {{else}}
      {{title}}
    {{/if}} 
  </li>
</script>
App.TasksController=Ember.ArrayController.extend({
行动:{
createTask:function(){
var task=this.store.createRecord('task');
task.save();
}
}
});
App.TaskController=Ember.ObjectController.extend({
i编辑:错,
行动:{
切换编辑:功能(任务){
如果(此.i编辑){
task.save();
}
this.set('isEditing',!this.isEditing);
}
} 
});
    {{#控制器中的每个任务} {{呈现“任务”任务} {{/每个}} 新任务
{{#如果是编辑} {{textarea value=title cols=“80”rows=“6”} {{else} {{title}} {{/if}
在模型上设置属性

您不必将属性定义为模型上的attr(这意味着它不会在保存时将其发送到服务器等),但您可以在模型上设置属性

或者,您可以根据模型的当前状态执行此操作。(单击转到订单,然后添加订单)


谢谢,也许我必须这样做,但它看起来不像余烬的方式。这是一个表示级别的问题,如果可能的话,我希望将状态排除在模型之外。我完全理解,将问题很好地分离总是很好的。
App.OrderController = Em.ObjectController.extend({
  _editing: false,
  editing: function(){
    return this.get('_editing') || (this.get('model.currentState.stateName') == 'root.loaded.created.uncommitted');
  }.property('model.currentState.stateName', '_editing'),
  actions: {
      stopEditing: function(){
        // blow away the computed property and just set it to true
        this.set('editing', false);
      },
      startEditing: function(){
        this.set('editing', true);
      },
    }
});