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

Angular.js 依赖注入问题

//定义A模块

var A = angular.module('a',[]);

A.value('time',new Date());

//定义B模块

var B = angular.module('b',['a']);

B.controller('conB',function($scope,time){
    $scope.b = time.getFullYear();
});


<p ng-controller = "conB">
    {{b}} //--> 2016
</p>



————————————————————————————————————————

    //定义A模块

var A = angular.module('a',[]);

A.controller('conA',function($scope){
    $scope.a = 12;
});

//定义B模块

var B = angular.module('b',['a']);

B.controller('conB',function($scope,conA){
    $scope.b = conA.a;
});


<p ng-controller = "conB">
    {{b}} //--> {{b}}报错
</p>

————————————————————————————————————————

这是为什么???
控制器之间可以进行依赖注入吗???

A.value是什么???

高洛峰高洛峰2687 Il y a quelques jours561

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

  • 黄舟

    黄舟2017-05-15 17:05:14

    value ressemble beaucoup à une constante (sauf qu'il ne peut pas être utilisé dans l'étape config), voir la documentation :

    Quant à la raison pour laquelle conA ne peut pas être utilisé dans conB, c'est simplement parce que vous jouez dans le mauvais sens. Premièrement, cette manière d'interdépendance entre controller n'est pas recommandée. en faisant ce Play, le code n'est pas écrit comme ça :

    //定义B模块
    
    var B = angular.module('b',['a']);
    
    B.controller('conB',function($scope, $controller){
        var ctrlAViewModel = $scope.$new();
        $controller('conA',{$scope : ctrlAViewModel });
        $scope.b = ctrlAViewModel.a;
    });

    répondre
    0
  • 给我你的怀抱

    给我你的怀抱2017-05-15 17:05:14

    Une brève description du téléphone mobile utilisé :

    var B = angulaire.module('b',['a'])
    Cela signifie que le module B dépend du module A, et ensuite

    B.controller('conB',function($scope,time){ $scope.b = time.getFullYear(); });

    C'est-à-dire que le temps est injecté dans le Conteoller du module B. S'il est injecté de cette manière, la classe à injecter doit être la même que la définition. Si vous souhaitez utiliser la deuxième méthode, c'est-à-dire si vous écrivez ce qui suit, vous pouvez utiliser $inject, ce qui peut également éviter le problème de la compression des abréviations des variables de code.

    répondre
    0
  • Annulerrépondre