angulaire.js - Lors de l'utilisation d'une directive dans AngularJS, comment transmettre les données à l'endroit où la directive est placée à l'aide de ng-model dans le modèle ?
仅有的幸福
仅有的幸福 2017-05-15 17:03:47
0
3
584

Personne n'a lu la question sérieusement et le problème n'est toujours pas résolu (´╥ω╥`)

Je souhaite personnaliser une commande radio. Les options sont déterminées en fonction des paramètres de la commande entrante. Ici je précise select-item-name égal à "review". Le problème est qu'en radio, la valeur de ng-model ne peut pas. être analysé en revue, résout toujours le nom du paramètre selectItemName

Le point clé du problème est que l'interaction entre la valeur transmise dans l'attribut d'instruction et la valeur liée au modèle ng dans le modèle n'est pas avec la valeur dans le contrôleur parent et la portée parent. le contrôleur parent n'est pas impliqué ici

code directif :

angular.module('starter')
        .directive('mySelect',['$rootScope','$window','$timeout',
                        function($rootScope, $window, $timeout){
            return {
                restrict:'A',
                replace:false,
               
                scope: {
                    selectItemName:'='
                },
               
                templateUrl: 'templates/select-directive.html',
                link:function(scope, element, attrs){
                    scope.selectItems = ['aa','bb'];
                    scope.$watch(attrs.selectItemName, function(newVal, oldVal){
                    console.log('newVal:'+newVal);
                    
                    if(newVal==oldVal){
                      return;
                    } 
                    
                    });

                }
            }
        }]);
        
仅有的幸福
仅有的幸福

répondre à tous(3)
为情所困

Comment

peut-il être utilisé avec @ ? Ne devrait-il pas être remplacé par = ?

Supplément :

Tout d'abord, il est correct de le changer en =. Ce que vous devez comprendre ici, c'est la différence entre = et @ :

.

Adresse du document : $compile

Deuxièmement, j'ai des objections à la partie $watch de votre instruction. Si vous êtes préoccupé par les changements dans selectItemName, vous devriez écrire comme ceci :

.
scope.$watch('selectItemName', function(newVal, oldVal){
    console.log('newVal:'+newVal);

    if(newVal==oldVal){
        return;
    }

});

Pour plus d'informations sur watchExpression, veuillez consulter :

Adresse du document : champ d'application

左手右手慢动作

Je ne comprends pas très bien quel est votre problème, mais j'ai importé votre code et je l'ai réessayé après avoir remplacé = par @, je l'ai effectivement compris.

大家讲道理

http://raowensheng.com/2014/05/08/angularjs%E7%9A%84%E8%87%AA%E5%AE%9A%E4%B9%89directive%E6%8C%87%E4 %BB%A4%E7%9A%84%E7%BB%91%E5%AE%9A%E7%AD%96%E7%95%A5scope%E3%80%81%E3%80%81/ Voir la question Lisez cet article. C'est très clair

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal