cari

Rumah  >  Soal Jawab  >  teks badan

angular.js - angularjs menyedari mengklik dua kali teg span dan menukar teg span menjadi teg input?

Terdapat berbilang teg span dalam halaman dan setiap teg span terikat pada acara dwiklik Cara melaksanakannya dalam acara dwiklik, supaya tag span yang dwipipi menjadi tag input. , dan nilai dalam teg span menjadi Nilai teg input?

怪我咯怪我咯2790 hari yang lalu931

membalas semua(4)saya akan balas

  • 迷茫

    迷茫2017-05-15 16:57:25

    1. Mudah untuk melakukannya dengan bantuan html5 ciri baharu contenteditable dan arahan Angular.
    2. Anda boleh menonton demo ini
    3. Kod khusus adalah seperti berikut:
    app.js

        (function(){
        angular.module('MyApp', [])
            .controller('MyController', MyController)
            .directive('contentEditable', contentEditable);
    
        MyController.$inject = [];
        contentEditable.$inject = [];
    
        function MyController(){
            var vm = this;
            vm.test = 'Hello World!';
        }
        function contentEditable(){
            return {
                require: 'ngModel',
                link: function (scope, element, attrs, ctrl) {
                    element.html(scope.vm.test);
                    attrs.$set('contenteditable', false);
    
                    ctrl.render = function (value) {
                        element.html(value);
                    };
    
                    ctrl.$setViewValue(element.html());
    
                    element.bind('dblclick', function () {
                        if (!attrs.contenteditable) {
                            attrs.$set('contenteditable', true);
                            element[0].focus();
                        }
                    });
    
                    element.bind('blur', function () {
                        attrs.$set('contenteditable', false);
    
                        scope.$apply(function () {
                            ctrl.$setViewValue(element.html());
                        });
                    });
    
                    element.bind('keydown', function (event) {
                        var esc_key = event.which === 27,
                            enter_key = event.which === 13;
    
                        if (esc_key || enter_key) {
                            event.preventDefault();
                            element[0].blur();
                        }
                    });
                }
            };
        }
    })();

    index.html

        <body ng-app="MyApp">
            <p class="test-container" ng-controller="MyController as vm">
                <p class="test" content-editable ng-model="vm.test"></p>
                <hr/>
                <p class="test" ng-bind="vm.test"></p>
            </p>
        </body>

    balas
    0
  • PHP中文网

    PHP中文网2017-05-15 16:57:25

    Hanya mengendalikannya dalam kualiti ng-dbclick

    balas
    0
  • 習慣沉默

    習慣沉默2017-05-15 16:57:25

    Secara umumnya, tulis dua, satu untuk disembunyikan dan satu untuk ditunjukkan:

    <span ng-show="!tag.edit" ng-dblclick="tag.edit = true" ng-bing="tag.name"></span>
    <input type="text" ng-show="tag.edit" ng-model="tag.name" />

    balas
    0
  • 高洛峰

    高洛峰2017-05-15 16:57:25

    Walaupun tidak baik untuk menukar keperluan secara santai... tetapi saya rasa apa yang anda mahu sebenarnya adalah input sebelum klik dua kali adalah baca sahaja dan tidak mempunyai sempadan Selepas klik dua kali, ia berubah daripada baca-. hanya boleh diedit dengan sempadan...
    Tambahkan respons klik dua kali seperti yang dikatakan sebelumnya, dan tukar baca sahaja dan gaya dalam fungsi panggil balik.

    balas
    0
  • Batalbalas