私はテキストオブジェクトを持っていて、編集可能なスパンにバインドしたいのですが、AngularJSは入力に対する双方向バインディングを提供しますが、スパンではないので、モデルは簡単だろう。ここで AngularJS - スパンを双方向でバインドする
angular.module("myApp", [])
.controller("TextController", function ($scope, $http, $location, $interval) {
$scope.myText = "my text";
$scope.updateModel = function() {
$scope.myText = $("#myspan").html();
};
...
});
は私のスパンである: はここに私のモデルである
<span id="myspan" contenteditable="true" ng-keyup="updateModel()" ng-bind="myText"></span>
私はからkeyupイベントをキャッチし、モデルを更新しています、しかし奇妙なあらゆる種類のものは、(ジャンプしますカーソルで発生します最初に)。 これを行うにはエレガントな方法がありますか? 私はちょうど入力またはテキストエリアを使用する必要がありますか?私はスパンを使用することは非正統であることを知っていますが、Googleドキュメントでうまくいくようです。
編集可能なスパンはお勧めしません。 CSSで修正された入力/テキストエリアがあなたの機能をサポートできますか? –
ここで入力を使用することをお勧めします。CSSを使用して、この時点でどのように見えるようにスタイルを設定することができます。実際のHTML要素は、特に使用したい別の理由がない限りスパン? –
@aegrey、それは私が考えていたものですが、Googleドキュメントやその他のWebエディタをスパンやdivを使用して調べると、コンテンツのサイズが変更されてしまうため、テキストエリア(およびCSSのみ) 。 –