ScriptSharp (Script #) и Knockout - PullRequest
       28

ScriptSharp (Script #) и Knockout

2 голосов
/ 25 февраля 2012

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

Вот пример: я воспроизвел - учебный пример Knockout JS "Счетчик кликов".

Скрипт Sharp View Model (C #code):

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

Ответы [ 2 ]

1 голос
/ 07 апреля 2012

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

1 голос
/ 27 февраля 2012

Ой!Обнародование их решает проблему, и они передаются js без подчеркивания.

...