[英]Angular $on not working
我有兩個控制器(主控制器和子控制器)。 我試圖將值從Main傳遞給Child控制器。
這些是控制器:
.controller('mainController', ['$scope', '$rootScope', '$location', 'CIFactory', function ($scope, $rootScope, $location, CIFactory) {
$scope.moveTool = function (buildServerTool) { //Am calling this moveTool function from View
$scope.tool = buildServerTool.toolname;
$scope.$broadcast('update_parent_controller', $scope.tool);
};
}])
.controller('childController', ['$scope', '$rootScope', '$q', '$timeout', '$log', 'CIFactory', function ($scope, $rootScope, $q, $timeout, $log, CIFactory) {
$scope.$on('update_parent_controller', function (event, tools) {
$scope.tools = tools;
});
}])
當我調試時,控制權進入moveTool()函數,但不在$ on內部(即,工具中的值未分配給$scope.tools
。我在這里做錯了什么?
正如Martijn所說, $broadcast
在$scope
鏈中向下移動,因此,如果子控制器不在父作用$scope
,則最好使用$rootScope
$rootScope.$broadcast('update_parent_controller', $scope.tool);
有關發射與廣播和范圍的更多信息,請參見此答案
謝謝克里斯。 我還嘗試了另一種方法,它對我有用。 我沒有使用$ broadcast和$ on,而是在子控制器中使用了以下代碼,
$scope.tools = $scope.$parent.tool;
因此,以上代碼從父控制器中獲取了$ scope值,並分配給了新的作用域$ scope.tools,我已經在相應的View中使用了它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.