사용자가 저장 버튼을 클릭하고 사용자가 작업을 취소 한 경우 이전 데이터를 검색하는 경우에만 양식을 편집하여 양식을 편집 할 때 좋은 해결책이 있습니까?emberjs로 양식을 편집 할 때 유용한 정보
각 양식 필드로 데이터 바인딩 된 개체를 복제하고 저장할 때 복제 된 개체로 초기 개체를 설정하는 것과 같은 몇 가지 솔루션을 보았습니다.
엠버 데이터를 사용하지 않고도 답변을 드릴 수 있다면 좋을 것입니다.
사용자가 저장 버튼을 클릭하고 사용자가 작업을 취소 한 경우 이전 데이터를 검색하는 경우에만 양식을 편집하여 양식을 편집 할 때 좋은 해결책이 있습니까?emberjs로 양식을 편집 할 때 유용한 정보
각 양식 필드로 데이터 바인딩 된 개체를 복제하고 저장할 때 복제 된 개체로 초기 개체를 설정하는 것과 같은 몇 가지 솔루션을 보았습니다.
엠버 데이터를 사용하지 않고도 답변을 드릴 수 있다면 좋을 것입니다.
나는 ember-data를 사용하지 않는 솔루션을 선호하지만 ember-data를 사용하는 것이 최상의 방법이라고 주장한다. 많은 사람들이이 질문을 접할 수 있다고 생각하기 때문에 다음은 ember-data를 사용하는 솔루션입니다 ...
다음과 같이 경로를 설정하면 정확하게 수행 할 수 있습니다.
App.CommentEditRoute = Em.Route.extend({
model: function(params) {
return this.store.find('comment', params.comment_id);
},
actions: {
willTransition: function(transition) {
var model = this.get('controller.content');
if (model.get('isDirty')) {
model.rollback();
}
}
},
});
(사용자가 저장 버튼을 클릭하기 때문에) 당신은 어댑터를 통해 변경 내용을 유지하고 isDirty
은 false
로 설정됩니다 컨트롤러에 this.get('content').save()
을 호출하는 경우. 따라서 모델은 롤백되지 않습니다. 그렇지 않은 경우 컨트롤러에서 this.get('content').save()
을 호출하지 않으면 isDirty
속성이 true
이되고 저장하지 않은 변경 내용은 삭제됩니다. 자세한 내용은 DS.Model docs을 참조하십시오.
willTransition
은 경로를 변경하려고 할 때 자동으로 호출되는 이벤트입니다. 직접 호출 할 필요가 없습니다.
컨트롤러는 다음과 같습니다
App.CommentEditController = Em.ObjectController.extend({
save: function() {
var _this = this;
_this.get('content').save().then(function() {
// Success
_this.transitionToRoute('comments');
}, function() {
// Failure
Em.assert('Uh oh!');
});
},
cancel: function() {
this.transitionToRoute('comments');
},
});
을 또한, 다음과 같이보기에 제출 이벤트를 캡처 할 수 있도록 제출 적절한 HTML 버튼이나 입력을 사용하여 기본 HTML 양식 제출을 활용해야 :
App.CommentEditView = Em.View.extend({
submit: function() {
this.get('controller').save();
},
});
해결 방법 ember-data를 사용합니다. Xiu는 명시 적으로'ember 데이터를 사용하지 않고 답변 '을 요청했습니다. – Oliver
Xiu는 "훌륭 할 수있다"고 말했다. 나는 ember-data를 사용하는 것이 모범 사례라고 주장 할 것이다. 나는 그것을 명확하게하기 위해 나의 대답을 편집했다. –
사실 ember 데이터를 사용하는 것이 더 좋았지 만 사실 현재 제가 작업하고있는 프로젝트는 ember-data를 구현하지 않습니다 :(어쨌든, ember 데이터로 마이그레이션하면 답변을 계속합니다.). 내가 볼 수 있듯이 라우터를 가지고 놀고 있지만 편집중인 양식은 라우터에 연결되어 있지 않습니다. 실제로 경로는 다음과 같습니다. http://mywebsite.com/template이 페이지에는 경로와 연결되지 않은 여러 양식이 있습니다. 솔루션을 어떻게 관리 할 수 있습니까? 이번에는 ember-data를 사용하지 않고 대답 할 수 있습니까? – Xiu