我正在尝试访问我正在编辑的ember模型对象的模型。我正在渲染一个观点:
{{view App.RemarkTextField valueBinding="content"}}
以下是观点:
App.RemarkTextField = Ember.TextField.extend
focusOut: (evt) ->
@state = @_context.get("stateManager.currentState")
if (@state.name == "saved")
@rollback()
keyUp: (evt) ->
@rollback() if evt.keyCode == 27
rollback: ->
@._context.transaction.rollback()
@get('parentView').intoReadMode()
我在父视图上调用了toReadMode(),以便在焦点丢失或转义时退出编辑模式,从输入恢复为标准文本。
此代码运行正常,但调用this._context以访问ember模型及其当前状态会感觉很脏。有更好的方法吗?
答案 0 :(得分:1)
同意召唤this._context
表明事情并不完全正确。在这种情况下,您最好通过控制器访问模型。
App.RemarkTextField = Ember.TextField.extend({
focusOut: function(evt) {
console.log('controller', this.get('controller'));
var state = this.get("controller.stateManager.currentState.name");
console.log('state', state);
}
});
FWIW将模型访问和回滚方法移动到控制器中可能是有意义的。然后重构parentView,使其根据控制器的属性进入/退出只读模式。
App.RemarkTextField = Ember.TextField.extend({
focusOut: function(evt) {
this.get('controller').send('rollback');
},
keyUp: function() {
if (evt.keyCode == 27) {
this.get('controller').send('rollback');
}
}
});