1

ユーザーがページ上の特定の要素の「編集」をクリックすると、編集中のコンテンツのテキストを強調表示して、ユーザーが入力領域をクリックする必要がないようにしたいと思います。

私は次のものを持っています:

var ViewModel = function () {
    var self = this;
    self.title = ko.observable("title");
    self.editing = ko.observable(false);
    if (self.editing()) {
       // highlight text in DOM?
    }
};

ko.applyBindings(new ViewModel()); 

jsFiddle は次のとおりです: http://jsfiddle.net/PTSkR/85/

これはどのように行うことができますか?

4

2 に答える 2

0

CSS バインディング:-

<input class="title-input" data-bind="value: title, css: {HL : editing()}"/>

CSS:

.HL {
    background: #ffff99; 
    color: #000000;
    } 
于 2013-05-29T04:52:45.663 に答える
0

ビューで hasfocus バインディングを使用します。一般的に言えば、可能であればビュー固有のものはすべて VM から除外し、組み込みバインディングまたはカスタム バインディングを介して処理する必要があります。

<input class="title-input" data-bind="value: title, hasfocus: editing"

あなたのフィドルを更新しました: http://jsfiddle.net/PTSkR/87/

更新: 入力テキストの選択は、カスタム バインディングで行うことができます。他の誰かがすでにこれを行う方法に答えています: https://stackoverflow.com/a/12297619/2421292

于 2013-05-29T01:21:50.297 に答える