搜尋

首頁  >  問答  >  主體

angular.js - angular指令 作用域問題

如何讓指令內部的controller產生的資料傳到指令外部的控制器中

我想大声告诉你我想大声告诉你2823 天前626

全部回覆(4)我來回復

  • 漂亮男人

    漂亮男人2017-05-15 17:00:21

    先說三種方法:

    1. 樓上回答的用廣播通信,$emit向上,$broadcast向下

    2. service共享数据,就是把同一个service注入到directivecontroller中,然后操作这个service的數據就好

    3. 當然你的directive如果在controller的里面,本身就可以访问到controller的作用域(前提是没创建独立scope),直接在directivecontroller中操作scope就可以了

    回覆
    0
  • 漂亮男人

    漂亮男人2017-05-15 17:00:21

    內部 $scope.$emit("emit",data)
    外部 $scope.$on("emit",function(ev,data){console.log(data)})

    回覆
    0
  • 世界只因有你

    世界只因有你2017-05-15 17:00:21

    使用獨立作用域,"="雙向綁定,將想要綁定的資料透過指令中的參數傳遞進來。

    回覆
    0
  • 仅有的幸福

    仅有的幸福2017-05-15 17:00:21

    有很多種方法,看你的資料想要如何使用。

    透過事件訂閱和廣播進行分發

    //$rootScope
    $rootScope.$on('data-pass',function(event, data){ $rootScope.$broadcast('data-receive', data) })
    // 传递数据的controller
    $scope.$emit('data-pass', data)
    // 需要数据的controller
    $scope.$on('data-receiver', function(event, data){
        // use data to do something
    })

    透過$scope的繼承特性改寫根作用域上的物件屬性值

    // 根作用域
    $rootScope.data = {}
    // 传递数据的controller
    $scope.data.record = {}
    // 需要数据的controller
    // use $scope.data.record to do something

    透過angular公用模組用於資料存儲,注入到需要使用的controller裡

    angular.factory('publicData',function(){
        return {}
    });
    // 传递数据的controller
    angular.controller('passController',function($scope, publicData){
        publicData.record = {}
    })
    // 需要数据的controller
    angular.controller('needController',function($scope, publicData){
        // use publicData.record to do something
    })

    回覆
    0
  • 取消回覆