2014-10-05 121 views
0

我有一個主控制器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

你應該看看使用'$ broadcast'和'$ on',參見[docs](https://docs.angularjs.org/api/ng/type/$rootScope.Scope) – 2014-10-05 17:34:57

回答

1

您正在使用element.bind('click'來收聽點擊。這是jQuery,並且這些更改是在角度世界之外的。你需要說出你的改變。

取代eventCtrl.setEventObject(scope.event.id);符合

scope.$apply(function() { 
    eventCtrl.setEventObject(scope.event.id); 
}); 

我試着在你的plunker上述變化,它按預期工作。