AngularJS将值从Controller更改为指令控制器

时间:2015-05-25 22:20:57

标签: javascript angularjs controller directive

我对角度很新,我在这里阅读了很多帖子并搜索了这个主题,但我无法得到明确的答案。我尝试做的是传递一个未设置的值,直到用户做出选择,此时我的控制器将调用异步调用并将结果分配给控制器中的值。我的指令控制器需要访问该值来执行其逻辑。

这是与我的相似的代码。

foreach(var strip in animationStrips)
{
    //Display current strip
}

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

你很近:

您的标记应该类似于:

<div ng-controller="testCtrl">
    <test-dir result-data="results"></test-dir>
</div>

app.controller('testCtrl', function($scope){
    $scope.getData = function(){
       //getDataFunc is a method in a Factory, which is not shown here
       $scope.results = getDataFunc();
    }
}

app.directive('testDir', function(){
    return{
        restrict: 'AE',
        scope: {
            resultData:  '='
        },
        controller:['$scope', function($scope){
            //I need to be able to access the $scope.results from the parent controller
             //$scope.resultData will always reflect the value of results here
             $scope.$watch('resultData', function(){
                 //called any time $scope.resultData changes
             });
        }
    }
}

你实际上不需要双向绑定,所以我实际上就是这样做的:

app.directive('testDir', function(){
    return{
        restrict: 'AE',
        scope: {
            resultData:  '&'
        },
        controller:['$scope', function($scope){
            //I need to be able to access the $scope.results from the parent controller
             //calling $scope.resultData() will always return the current value of the parent $scope.results

             $scope.$watch('resultData()', function(){
                 //called any time $scope.resultData() changes
             });
        }
    }
}

答案 1 :(得分:0)

使用value创建一个服务,并使用set / get方法存储getDataFunc()的结果,然后将该服务注入指令以获取对该值的访问权。