在Ember中重置具有计算出的单向属性的窗体
Resetting a form with computed oneWay properties in Ember
我正在建模一个嵌入在模态中的窗体,当我的路由在控制器中显式调用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.SizeEditorModalController = Ember.ObjectController.extend
width: Ember.computed.oneWay 'model.width'
height: Ember.computed.oneWay 'model.height'
top: Ember.computed.oneWay 'model.top'
left: Ember.computed.oneWay 'model.left'
reset: ->
# I'd like to restore the oneWay properties to its default values coming from the bound model
这是显示先前涉及控制器的模式重置的路线。
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'
当我为表单控件设置一些值时,它们会永远保留在那里,因为我使用的是oneWay属性,我不知道是否存在任何重置这些属性以再次从源绑定获取值的方法。我不希望在单击"保存"按钮之前更新模型。这是一种很常见的情况,我相信Ember有一个简单的方法来实现这一点,但目前我还不知道这是什么方法。
提前感谢
使用模型的回滚功能。如果一个模型脏了,你可以像一样回滚它
/**
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
(http://emberjs.com/api/classes/Ember.Route.html#method_render)方法在传递类似render
的模型时会以这种方式运行(http://emberjs.com/api/classes/Ember.Handlebars.helpers.html#method_render)helper有,但它并没有任何作用。不过,当我希望在不需要创建控制器的新实例的情况下重置我的控制器计算的oneWay属性时,我仍然缺少这种情况。
相关文章:
- 防止Iframe窗体在新窗口中打开
- RegEx删除空属性?例如,如果(class=“”||class=“”)移除;否则就下课
- 全局变量和全局对象的属性之间有什么区别吗
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- 如何在Bootstrap Modal中为动态点击生成的变量设置jade属性
- 序列化数据属性中对象的最可靠方法
- 分析高度属性时出现意外值{{specs.height}}.index.html
- TypeError:无法读取属性'推'未定义的JavaScript
- 同样,同样的错误'ahorcado.js:26未捕获类型错误:无法读取属性'beginPath'
- Meteor-将选定窗体中的对象添加到集合中
- AngularJS-使用'true'属性
- 在Ember中重置具有计算出的单向属性的窗体
- 从 Zend 窗体元素中删除 id 属性
- 在 ASP.NET Web 窗体中从 javascript/客户端设置属性背后的代码
- 从 ASP.NET Web 窗体中的服务器端属性创建 JavaScript 条件
- 如何为窗体返回布尔值's”;onsubmit”;属性,这取决于ajax调用的成功与否
- 禁用html5”;“必需”;不显示窗体部分时的字段输入属性
- 如何获得窗体的属性
- 在具有特定属性的窗体内设置输入字段的值
- 当窗体处于弹出窗口中时,我如何将窗体's的action属性指向自身?