2016-12-01 21 views
0

私はWebサイトのメンバーである顧客を持っています。彼は本当に非常に頻繁に毎回フォームを記入しなければなりません。だからこそ、私は彼にこのプロセスを自動的にさせるためのアプリケーションを開発してほしいのです。 WebBrowserコントロールを使用して操作すると、ログインできますが、その後にデータバインディングを含むフィールドがあります。これらのフィールドは、私が操作する必要があるフィールドです。必要なフィールドにデータをプッシュすると、htmlタグに値の属性がなく、代わりにデータバインディングがあるため、機能しません。だから私の質問は、どのようにこれらのフィールドにデータを操作したりプッシュすることができますか?データバインディングの操作方法、knockoutJs

ご協力いただきありがとうございます。

+0

あなたはドキュメントを読みましたか? http://knockoutjs.com/documentation/attr-binding.html – PMerlet

+0

実際、私はそれをチェックしてデータバインディングのロジックを得ました。そのようなangularJs NGモデルですが、私が理解できなかったことはそれを操作しています。もしあなたがそれについて何か考えているなら、私と共有できるかどうかに感謝します:) –

+0

html domにカスタムスクリプトを追加する方法はありますか? webBrowserコントロールを介して。可能であれば、スクリプトをHTMLにプッシュして、操作できるようにすることもできます。 –

答えて

0

ノックアウトは、データバインドを使用して入力内の変更をリッスンし、基礎となるモデルを更新します。たとえば、valueバインディングはchangeイベントをリッスンし、新しい値をデータバインドobservableに書き込みます。

value属性をコードで更新すると、changeイベントは発生しません。 UIの新しい値を参照してください。ただし、javascriptモデルは更新されません。

明示的に変更をトリガすることでこれと戦うことができます。ここでは例です:

  • タイプinputに:あなたは、ログは表示されません:ノックアウトではありません、あなたはノックアウトを示しconsole.log
  • 押して、新しい価値を注入するボタンに更新されます表示されます更新された
  • 最後のボタンを押してchangeイベントをトリガーします。ノックアウトがモデルを更新するようになります。

もちろん、2つのクリックリスナーを1つの機能にまとめることができます。私はポイントを渡すためにそれらを分けました。

// Hidden knockout code: 
 
(function() { 
 
    var label = ko.observable("test"); 
 
    label.subscribe(console.log.bind(console)); 
 

 
    ko.applyBindings({ label: label }); 
 
}()); 
 

 
// Your code 
 
var buttons = document.querySelectorAll("button"); 
 
var input = document.querySelector("input"); 
 

 
buttons[0].addEventListener("click", function() { 
 
    input.value = "generated value"; 
 
}); 
 

 
buttons[1].addEventListener("click", function() { 
 
    // http://stackoverflow.com/a/2856602/3297291 
 
    var evt = document.createEvent("HTMLEvents"); 
 
    evt.initEvent("change", false, true); 
 
    input.dispatchEvent(evt); 
 
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script> 
 
<input type="text" data-bind="value: label"> 
 

 
<button>inject value from outside</button> 
 
<button>let knockout know something changed</button>

+0

株主に感謝して、何とか私はそれをチェックするのに適切な時間を得ることができませんでしたが、できるだけ早くこれを試してみましょう。再度、感謝します。 –

関連する問題