簡體   English   中英

角度$ on不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM