JS Directive를 사용하여 DotVVM에서 JavaScript 함수 호출
8680 단어 csharpjavascriptdotnethtml
JS 디렉티브란?
JS 지시문은 DotVVM 컨트롤과 JavaScript 코드 간에 상호 작용하는 방법을 제공하는 기능 세트입니다. 예를 들어 JS Directive를 사용하면 DotVVM에서 JavaScript 함수를 호출하고 JavaScript에서 DotVVM으로 데이터를 보낼 수 있습니다.
참고: 이 기능은 DotVVM 3.0에 통합되었습니다.
따라야 할 단계
DotVVM과 JavaScript 간의 통신을 설정하려면 다음 단계를 따라야 합니다.
예시
예제에서 JS Directive가 어떻게 작동하는지 확인하기 위해 위에서 언급한 단계에 따라 사용자에게 두 개의 숫자를 요청하고 해당 작업을 수행하는 JavaScript 함수를 호출하고 마지막으로 결과를 웹 페이지에 표시해 보겠습니다.
우리의 예는 다음과 같이 시각화됩니다.
가장 먼저 가져야 할 것은 해당 기능이 있는 JavaScript 모듈입니다. 이 경우 다음 정의와 함께
JavaScript.js
폴더에 wwwroot
라는 파일이 있습니다.export default (contextApp) => new App(contextApp);
var WEB;
class App {
constructor(contextApp) {
this.contextApp = contextApp;
WEB = contextApp;
}
operation(a, b) {
let result = a + b;
WEB.namedCommands["ResultOperation"](result);
}
}
여기서
operation
함수는 합계를 수행한 다음 그 결과를 DotVVVM으로 보기에 정의된 ResultOperation
섹션에 넣습니다.이
App
클래스와 정의된 컨텍스트를 사용하여 DotVVM에서 JavaScript로 또는 그 반대로 호출할 수 있도록 DotVVM에 등록할 수 있습니다. 이런 의미에서 우리는 DotVVM Startup
클래스로 이동해야 하며 ConfigureResources
메서드에서 문제의 JavaScript 파일을 참조하고 이 레코드의 이름을 지정해야 합니다(이 경우 이름은 module
).private void ConfigureResources(DotvvmConfiguration config, string applicationPath)
{
//JS Directive
config.Resources.Register("module", new ScriptModuleResource(new UrlResourceLocation("~/JavaScript.js"))
{
//Dependencies = new[] { "external/other-js-file" }
});
}
이 정의를 통해 이미 JS Directive를 사용할 수 있습니다. 두 숫자의 합계에 대해 ViewModel에서 세 가지 변수를 정의합니다(이 경우
DefaultViewModel.cs
).@viewModel JSDirective.ViewModels.DefaultViewModel, JSDirective
@masterPage Views/MasterPage.dotmaster
@js module
<dot:Content ContentPlaceHolderID="MainContent">
<div class="content">
<div class="content__text">
<h1>JS Directive Demo</h1>
<h3>Add two numbers</h3>
<ul class="content-page">
<li><b>Number1: </b></li>
<li><dot:TextBox Text="{value: Number1}" Type="Number" /></li>
<li><b>Number2: </b></li>
<li><dot:TextBox Text="{value: Number2}" Type="Number" /></li>
</ul>
<dot:Button Text="Calculate"
Click="{staticCommand:_js.Invoke("operation", Number1, Number2);}" />
<dot:NamedCommand Name="ResultOperation" Command="{staticCommand: (int id) => _root.Result = id}" />
<h3>Result: <b>{{value: Result}}</b></h3>
</div>
</div>
</dot:Content>
보기에서 사용하려는 JavaScript 모듈을 참조해야 합니다. 이 경우 이전에 등록된 모듈의 이름과 함께 식별자
js
로 참조할 수 있습니다.@js module
그런 다음 이 관점에서 우리는 세 가지 중요한 사항을 언급할 수 있습니다.
TextBox
유형의 두 DotVVM 컨트롤이 사용되었습니다. Button
를 사용하여 함수 이름을 지정하고 해당 매개변수( Number1
및 Number2
)를 보낼 수 있습니다. NamedCommand
컨트롤을 사용하면 JavaScript에서 명령을 호출할 수 있습니다. 이 경우 섹션은 ResultOperation이라는 이름으로 정의되어 JavaScript에서 작업 값을 전송하고 변수Result
(에서 정의됨)에 저장합니다. DotVVM의 ViewModel). 이 프로세스를 통해 DotVVM에서 JavaScript 함수를 호출하고 JavaScript에서 DotVVM으로 값을 보낼 수 있었습니다.
전체 JS Directive 설명서는 DotVVM: JS directive overview 의 설명서에서 검토할 수 있습니다.
읽어 주셔서 감사합니다
읽어주셔서 대단히 감사합니다. 이 기사가 흥미롭고 앞으로 유용할 수 있기를 바랍니다.
이 예제의 소스 코드는 GitHub의 다음 리포지토리에서 찾을 수 있습니다. DotVVM JS Directive .
논의해야 할 질문이나 아이디어가 있으면 서로 협력하고 함께 지식을 교환할 수 있는 것이 즐거울 것입니다.
에서 만나요! :)
Reference
이 문제에 관하여(JS Directive를 사용하여 DotVVM에서 JavaScript 함수 호출), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/esdanielgomez/calling-javascript-functions-from-dotvvm-with-js-directive-1ci0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)