2012-02-25 3 views
2

Модифицированные действия моего скрипта переименовываются, поэтому они имеют префикс с подчеркиванием. Несмотря на то, что код работает очень просто в браузере, очень неприятно, что нужно помнить о том, чтобы добавить подчеркивание, чтобы использовать его на стороне клиента. Это по дизайну и есть способ изменить его?ScriptSharp (скрипт #) и нокаут

Образец примера: Я воспроизвел - Пример учебника Jock's JS «Click Counter».

Script Sharp View Model (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 действия получают с префиксом подчеркивания. Это ожидаемое поведение?

Сгенерированный код (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 

ответ

1

по электронной почте Ой!

Я не делал свои два действия registerClick и resetClicks public. Публикация этих вопросов позаботится о проблеме, и они отображаются в js без подчеркивания.

1

Подчеркивание - это обычное условное обозначение JavaScript, означающее «это личное». Scriptsharp дает имена не принадлежащих членам, свойствам и методам, начинающиеся с символа подчеркивания. Сделайте свои действия общедоступными, чтобы удобно ссылаться на них во внешнем JavaScript.

Смежные вопросы