recherche

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

angular.js - angular自定义指令中如何监视属性值的变化

html

<p on-test data={{userinfo}}></p>
//自定义指令on-test,contorller中通过ajax的方式从后台拿到userinfo,userinfo是一段很长的json字符串,会随着用户的操作而变化

directive

app.directive('onTest', function () {
    return {
        restrict: 'A',
        scope:{
          test:'@data'
        },
        link: function(scope , element, attr) {
            console.log(scope)
            /**
            *我想在这里拿到后台传过来的userinfo字符串,通过userinfo操作我的dom界面
            **/
        }
    };
});

我的疑惑:

習慣沉默習慣沉默2744 Il y a quelques jours519

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

  • 某草草

    某草草2017-05-15 17:04:48

    <p ng-app="app" ng-init="userinfo='123'">
        <input type="text" ng-model="userinfo" />{{userinfo}}
        <p on-test data="{{userinfo}}"></p>
    </p>
    <script src="http://cdn.bootcss.com/angular.js/1.5.6/angular.js"></script>
    <script>
        var app = angular.module('app', [])
    
        app.directive('onTest', function () {
            return {
                restrict: 'A',
                scope: {
                    test: '@data'
                },
                link: function (scope, element, attr) {
                    console.log('init', scope.test)
    
                    attr.$observe('data', function (val) {
                        console.log(val)
                    })
                }
            }
        })
    </script>

    répondre
    0
  • 仅有的幸福

    仅有的幸福2017-05-15 17:04:48

    Camarade, votre gameplay est faux :

    Le premier est la partie modèle. Puisque vous souhaitez surveiller les modifications de userInfo, il est plus approprié d'utiliser une liaison bidirectionnelle, mais ce que vous écrivez est des attributs de liaison (ce n'est pas assez cool) :

    <p on-test data="userinfo"></p>
    <!--这样就可以了-->

    Ce qui suit est la partie d'enregistrement des commandes :

    app.directive('onTest', function () {
        return {
            restrict: 'A',
            scope:{
              test:'=data'//双向绑定用=
            },
            link: function(scope , element, attr) {
                console.log(scope.test);//high不high?拿到了哦
                           
                scope.$watch('test', function(newVal){
                    console.log(newVal);//每次你在controller里修改了userInfo,这里都会打印
                }, true);
            }
        };
    });

    répondre
    0
  • Annulerrépondre