スクリプトのシャープアクションの名前が変更され、アンダースコアが前に付けられます。コードはブラウザでうまく動作しますが、クライアント側で使用するにはアンダースコアを追加することを忘れてはなりません。これは設計によるのですか?それを変更する方法はありますか?ScriptSharp(Script#)とノックアウト
ここにサンプルがあります: ノックアウトJSのチュートリアルの例「クリックカウンター」を再現しました。
スクリプトシャープビューモデル(C#コード):
public sealed class ClickCounterViewModel
{
public Observable<int> numberOfClicks;
//Dependent Observable is now called computed but is backward compat.
public DependentObservable<bool> hasClickedTooManyTimes;
//WARNING - this get converted to _registerClick Client Side - not sure why.
Action registerClick;
Action resetClicks;
public ClickCounterViewModel()
{
numberOfClicks = Knockout.Observable<int>(0);
registerClick = delegate() {
this.numberOfClicks.SetValue(this.numberOfClicks.GetValue() + 1);
};
resetClicks = delegate() { this.numberOfClicks.SetValue(0); };
DependentObservableOptions<bool> options = new DependentObservableOptions<bool>();
options.Model = this;
options.GetValueFunction = new Func<bool>(delegate {
return this.numberOfClicks.GetValue() >= 3;
});
hasClickedTooManyTimes = Knockout.DependentObservable<bool>(options);
}
}
このコードはアクションがアンダースコアで始まる取得JavaScriptに変換されます。これは期待される行動ですか?
生成されるコード(ジャバスクリプト)が - ただ、問題を説明するために生成されたコメントを表示:
Knockout2Example2.ClickCounterViewModel = function Knockout2Example2_ClickCounterViewModel() {
/// <field name="numberOfClicks" type="Observable`1">
/// </field>
/// <field name="hasClickedTooManyTimes" type="DependentObservable`1">
/// </field>
/// <field name="_registerClick" type="Function">
/// </field>
/// <field name="_resetClicks" type="Function">
/// </field>
/// This script was generated using Script# v0.7.4.0