我有一个主控制器 EventCtrl ,它在其范围内设置 formData 变量。
此控制器有一个 setEventObject 方法,该方法会覆盖 formData 对象。
我的目的是能够从子指令调用此方法,并递归地将新变量值应用于每个范围。
这是控制器及其 setEventObject 函数:
app.controller('EventCtrl', function($scope) {
$scope.formData = {
id: 1,
name: 'tennis lesson'
}
$scope.events = [
{id: 1, name: 'tennis lesson'},
{id: 2, name: 'golf lesson'},
{id: 3, name: 'handball lesson'}
];
this.setEventObject = function(eventId) {
angular.forEach($scope.events, function(elem) {
if (elem.id == eventId) {
$scope.formData = {
id: elem.id,
name: elem.name
};
}
});
}
});
以下是关联的Plunkr,点击链接时,应设置表单输入并重置 formData 变量。
感谢您的帮助!
答案 0 :(得分:1)
您正在使用element.bind('click'
收听点击。这是jQuery,这些变化是在角度世界之外。你需要对你的变化有所了解。
用
替换eventCtrl.setEventObject(scope.event.id);
行
scope.$apply(function () {
eventCtrl.setEventObject(scope.event.id);
});
我在您的plunker中尝试了上述更改,它按预期工作。