2012-02-25 4 views
2

내 스크립트 날카로운 동작의 이름이 바뀌어 접두사가 밑줄로 표시됩니다. 코드가 브라우저에서 훌륭하게 실행 되기는하지만 클라이언트 쪽을 사용하려면 밑줄을 추가해야한다는 것을 기억해야합니다. 디자인에 의한 것인가? 그것을 바꿀 수있는 방법이 있습니까?ScriptSharp (Script #) 및 Knockout

다음은 샘플입니다. 녹아웃 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); 
    } 
} 

. 이것은 예상되는 행동입니까?

생성 된 코드 (자바 스크립트) - 단지 문제를 설명하기 위해 생성 된 주석을 보여주는 :

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를 공개하지 않았습니다. 공개로 설정하면 문제가 처리되며 밑줄이없는 js로 렌더링됩니다.

1

언더 코어는 "this is private"이라는 일반적인 JavaScript 규칙입니다. Scriptsharp는 밑줄로 시작하는 비 public 멤버, 속성 및 메서드 이름을 제공합니다. 외부 JavaScript에서 편리하게 참조 할 수 있도록 활동을 공개하십시오.

관련 문제