recherche

Maison  >  Questions et réponses  >  le corps du texte

angulaire.js - Problème d'utilisation de & dans l'attribut scope dans la directive angulaire pour obtenir la fonction scope parent

Excusez-moi pourquoi les dernières données qui apparaissent dans l'alerte proviennent du périmètre parent

Le résultat du clic pour exécuter la méthode say du sous-domaine

Le code est le suivant :

<p ng-app="myModule">
    <h3>请分别修改父、子作用域表单里的值</h3>
    <p ng-controller="myController">
        父作用域:<br/>
        <input type="text" ng-model="name" /><br/>
        <input type="text" ng-model="sex" /><br/>
        <input type="button" ng-click="say()" value="点击执行父域的say方法" /><br/>
        子作用域:<br/>
        <my-directive my-name="{{name}}" my-sex="sex" get-name='say()'></my-directive><br/>
    </p>

</p>
<script src="../angular-1.5.8/angular.js"></script>
<script type="text/javascript">
    var myModule = angular.module("myModule", []);
    myModule.controller("myController", ['$scope', function($scope){
        $scope.name = "wangmeijian";
        $scope.sex = "boy";
        $scope.say = function(){
            alert( $scope.name +" is a"+ $scope.sex )
        }
    }])
    myModule.directive("myDirective", function(){
        return {
            restrict: "EA",
            scope: {
                myName: "@",
                mySex: "=",
                getName: "&"
            },
            template: "<input type='text' ng-model='myName' /><br/>"+
            "<input type='text' ng-model='mySex' /><br/>"+
            "<input type='button' ng-click='getName()' value='点击执行子域的say方法' />",
        }
    })

</script>
ringa_leeringa_lee2840 Il y a quelques jours570

répondre à tous(1)je répondrai

  • 黄舟

    黄舟2017-05-15 17:09:51

    Tout d’abord, ce qui s’imprime, c’est le nom et le sexe. Ensuite, il y a myName et mySex dans votre sous-portée.
    De plus, ce qui est imprimé, c'est le nom et le sexe dans l'environnement actuel, par exemple.

    var fn ;

    function test1() {
        var t = 1;
        fn = function(){
            console.log(t);
        }
    }
    function test2() {
        var t = 2;
        fn();
    }
    test1();
    test2();  //打印的是 1
    

    répondre
    0
  • Annulerrépondre