cari

Rumah  >  Soal Jawab  >  teks badan

angular.js - angularJS 用directive的时候,放指令的地方传递的数据,怎么在template中用ng-model取到

大家都没有认真看题,问题仍然没有解决( ´╥ω╥`)

我想定制一个单选控件,备选项根据传入指令的参数而定,我这里是由select-item-name指定的等于"review", 问题是在radio这里,ng-model的值不能解析成review,始终解析为参数名selectItemName

问题的重点在于,指令属性中传的值,和模板中的ng-model绑定的值的交互,不是跟父controller中的值,这里不涉及父作用域和父controller

directive代码:

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;
                    } 
                    
                    });

                }
            }
        }]);
        
仅有的幸福仅有的幸福2744 hari yang lalu557

membalas semua(3)saya akan balas

  • 为情所困

    为情所困2017-05-15 17:05:47

    Bagaimanakah

    boleh digunakan dengan @? Bukankah ia sepatutnya digantikan dengan =?

    Tambahan:

    Pertama sekali, adalah betul untuk menukarnya kepada = Apa yang anda perlu fahami di sini ialah perbezaan antara = dan @:

    .

    Alamat dokumen: $compile

    Kedua, saya mempunyai bantahan terhadap bahagian $watch arahan anda Jika anda bimbang tentang perubahan dalam selectItemName, anda harus menulis seperti ini:

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

    Untuk maklumat lanjut tentang watchExpression, sila lihat:

    Alamat dokumen: skop

    balas
    0
  • ringa_lee

    ringa_lee2017-05-15 17:05:47

    Saya tidak begitu faham apa masalah anda, tetapi saya mengimport kod anda dan mencubanya semula Selepas menukar = kembali ke @, saya sebenarnya mendapatnya.

    balas
    0
  • 大家讲道理

    大家讲道理2017-05-15 17:05:47

    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%A5skop%E3%80%81%E3%80%81/ Lihat soalan Baca artikel ini. Ia sangat jelas

    balas
    0
  • Batalbalas