Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/26.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中重置具有计算单向属性的窗体_Javascript_Forms_Ember.js_Binding - Fatal编程技术网

Javascript 在Ember中重置具有计算单向属性的窗体

Javascript 在Ember中重置具有计算单向属性的窗体,javascript,forms,ember.js,binding,Javascript,Forms,Ember.js,Binding,我正在建模一个嵌入在模态中的表单,我希望在我的路由在控制器中显式调用reset时重置它。这就是我在模态中管理的表单: {{#modal-window title='Size management' close='removeModal'}} <label> <span>Size</span> {{input value=width class='width'}} <span>X</span> {{in

我正在建模一个嵌入在模态中的表单,我希望在我的路由在控制器中显式调用reset时重置它。这就是我在模态中管理的表单:

{{#modal-window title='Size management' close='removeModal'}}
  <label>
    <span>Size</span>
    {{input value=width class='width'}}
    <span>X</span>
    {{input value=height class='height'}}
  </label>
  <label>
    <span>Left</span>
    {{input value=left class='left'}}
  </label>
  <label>
    <span>Top</span>
    {{input value=top class='top'}}
  </label>
{{/modal-window}}
这是显示控制器之前模式重置的路线

App.ApplicationRoute = Ember.Route.extend
  actions:
    showModal: (name, model)->
      controller = @controllerFor name
      controller.reset()
      @render name,
        into:   'application'
        outlet: 'modal'
        model:  model
    removeModal: ->
      @disconnectOutlet
        outlet:     'modal'
        parentView: 'application'
当我为表单控件设置一些值时,它们将永远留在那里,因为我使用的是单向属性,我不知道是否存在重置这些属性以再次从源绑定获取值的方法。 我不希望在单击“保存”按钮之前更新模型。 这是一个相当普遍的情况,我相信余烬有一个简单的方法来实现这一点,但目前我看不出这是什么方式


提前感谢

使用模型的回滚功能。 如果模型脏了,可以按如下方式回滚:

/**
If the model `isDirty` this function will discard any unsaved
changes
Example
```javascript
record.get('name'); // 'Untitled Document'
record.set('name', 'Doc 1');
record.get('name'); // 'Doc 1'
record.rollback();
record.get('name'); // 'Untitled Document'
```
@method rollback
*/
所有未保存的更改都将消失。

这就成功了

App.register 'controller:size-editor-modal', App.SizeEditorModalController, { singleton: false }
如果我添加了这个,我的控制器就不再是单例的,然后每次模态需要时都会创建一个新实例。然后,控制器使用计算出的属性及其来自模型的默认值。 我假设
render
()方法在传递像
render
()这样的模型时会以这种方式运行,但它与此无关。
我仍然不想看到这样的情况:我希望我的控制器计算出的单向属性被重置,而不需要创建控制器的新实例。

我没有使用余烬数据。我必须实现类似的东西。不管怎样,如果我移动到应用程序中的另一个地方怎么办?如果我不显式地调用rollback,这些更改将保持不变。即使是最糟糕的情况,observes也会在其他地方执行其逻辑,即使它们不是决定性的更改。一个好的替代方法是使用组件而不是控制器。这也将简化到Ember 2.0的过渡
App.register 'controller:size-editor-modal', App.SizeEditorModalController, { singleton: false }