angulaire.js - Comment surveiller les modifications des valeurs d'attribut dans les directives personnalisées angulaires
習慣沉默
習慣沉默 2017-05-15 17:02:48
0
2
548

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界面
            **/
        }
    };
});

Mes doutes :

  • J'imprime la portée dans le lien et je peux voir les données transmises, mais je ne parviens pas à obtenir mes données via scope.test

習慣沉默
習慣沉默

répondre à tous(2)
某草草
<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>
仅有的幸福

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);
        }
    };
});
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal