angular.js - angularjs menyedari mengklik dua kali teg span dan menukar teg span menjadi teg input?
怪我咯
怪我咯 2017-05-15 16:55:25
0
4
953

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?

怪我咯
怪我咯

走同样的路,发现不同的人生

membalas semua(4)
迷茫

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>
洪涛

Hanya mengendalikannya dalam kualiti ng-dbclick

習慣沉默

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" />
小葫芦

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.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan