在控制器中访问AngularJs指令变量

vim*_*uth 9 angularjs angularjs-directive angularjs-controller

我对Angularjs有点新意.我想要的是在' myController '控制器中访问" $ scope.myVar "变量.如果您能提供解决方案,那将会很有帮助.

angular.module('myDirective', [])
        .controller('myController', ['$scope', function ($scope) {
               
            }])
        .directive('myDirective', function () {           
            return {
                scope: {
                    myVar: '='                  
                },
                controller: function ($scope) {  
                    $scope.myVar = 'xyz';
                    alert($scope.myVar);
                }
            };
        });
Run Code Online (Sandbox Code Playgroud)
<html lang="en-US">  
    <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
    <script type="text/javascript" src="newjavascript.js"></script>
    <body ng-app="myDirective">   
        <div ng-controller="myController">
            <my-directive></my-directive>>
        </div>
    </body>
</html> 
Run Code Online (Sandbox Code Playgroud)

Viv*_*vek 13

您只需myVar在控制器中创建一个变量,并将其传递给使用my-var属性的指令.

在你的myController,定义myVar

$scope.myVar= "Hello"
Run Code Online (Sandbox Code Playgroud)

我是你的DOM,把它传递给指令as

<my-directive my-var="myVar"></my-directive>
Run Code Online (Sandbox Code Playgroud)

由于您使用的是双向绑定,因此myVar控制器中可以使用该指令所做的任何更改.

您可以watch启用myVar跟踪更改.


Vij*_*kar 10

angular.module('myDirective', [])
        .controller('myController', ['$scope', function ($scope) {
               $scope.show = function() {
                   alert($scope.myVar);
               }; 
            }])
        .directive('myDirective', function () {           
            return {
                scope: {
                    myVar: '='                  
                },
                controller: function ($scope) {  
                    $scope.myVar = 'xyz';
                    alert($scope.myVar);
                    $scope.$parent.myVar = $scope.myVar; // here you can access the controller scope by using $parent
                }
             };
        });
Run Code Online (Sandbox Code Playgroud)