我有一个包含答案数组的问题模型对象。 Question 和 Answer 都有一些需要验证的属性。我正在使用 Ember 验证。当用户尝试保存时,我需要触发对问题和答案的验证。所以,我正在触发问题 Controller 验证,但如何强制问题 Controller 等待 AnswerControllers 验证?由于 AnswerController 引用了 QuestionController(父级),它们可以观察父级的属性并触发它们的验证。但问题是我如何强制 QuestionController 等待答案 Controller 验证? Question 有自己的属性,因此 QuestionController 不能是数组 Controller !
最佳答案
您的子 Controller 很可能与使用 itemController 的某些数组 Controller 相关。使用数组 Controller 的上下文,您可以迭代它,您将拥有子 Controller 的每个实例。
App.FooController = Em.ArrayController.extend({
itemController: 'bar',
doSomething: function(){
this.forEach(function(itemController){
console.log(itemController);
});
}
});
但正如您所提到的,您的问题不是数组 Controller ,所以我猜测您可能是在模板中使用 itemController 来显示答案
{{#each foo in answers itemController='answer'}}
{{/each}}
这会带来一个问题,因为您无权访问 Controller 。但是您可以使用 render
所以你不是做上面的每一个,而是做
{{render 'answers' answers}}
并且您有一个答案模板和一个答案 Controller 。
模板
{{#each foo in answers}}
{{/each}}
Controller
App.AnswersController = Em.ArrayController.extend({
itemController: 'bar',
doSomething: function(){
this.forEach(function(itemController){
console.log(itemController);
});
}
});
现在您可以迭代您的 child 。
关于javascript - 如何在 Ember JS 中从父 Controller 获取子 Controller 的引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24006433/