我「ProjectsCtrl」包含此功能添加一個新的項目,以父資源:從外部JS訪問Angular模型實例?
$scope.addProject = function(client){
$scope.client = client;
$scope.newProject.client_id = client.id;
project = Project.save($scope.newProject);
$scope.newProject = {};
}
的「客戶」的說法是從面向視圖,其中我有一個ng-repeat="client in clients"
塊內ng-submit="addProject(client)"
。
在另一個.js文件中,我試圖獲取對該客戶端實例的引用,以便在使用服務器端事件推送一些數據之後更新視圖。下面是該代碼:
var pSource = new EventSource('/administration/projects/events');
pSource.addEventListener('projects.create', function(e){
var project = $.parseJSON(e.data);
var projectCtrl = angular.element($(".project-list")).scope();
projectCtrl.$apply(function(){
projectCtrl.client.projects.push(project);
});
});
的問題是,該項目總是附加到第一客戶機實例,而不是一個被傳遞給addProject()
功能。
如果我在控制器內做client.projects.push(project);
,那麼它工作正常。我如何從控制器外部獲得對該客戶端實例的引用?
無論何時需要在應用的不同部分之間綁定數據....使用服務來存儲數據,注入無論何時需要訪問的服務。或者可以廣播一個包含數據的事件 – charlietfl
@charlietfl這不會讓我面臨需要從Angular之外訪問模型實例的相同問題嗎?或者,也許我誤解了你。這是我第一次進入Angular。 – aperture
可以將所有數據存儲在全局數組中,將該全局數組傳遞給角。將其他文件中的內容用作角度服務會更理想 – charlietfl