2020/03/31
[Vue] 如何轉換 jQuery 全域的 click 事件到 Vue 的相對處理方試
markdown
### 前言
採用 jQuery 引用 `$(document).click()` 的來監聽整份文件的點擊事件
文件內有其他子項目的點擊處理 `$('.myButton').click()`
那麼以 Vue 的相對處理方式為何? (範例為 Vue 2.x 版本)
### 監聽事件
在 mounted 加入 `document.addEventListener`, 事件為 `click`, callback 為在 Vue 的定義的 `onClick` 方法
```
document.addEventListener('click', this.onClick);
```
在 Vue 的使用如下
```js
new Vue({
...
methods: {
onClick() {},
buttonClick() {}
}
mounted() {
document.addEventListener('click', this.onClick);
},
beforeDestroy() {
document.removeEventListener('click', this.onClick);
},
...
});
```
注意在 HTML 的 Vue click 事件, 需要加上 `.stop` (它等同於 `event.stopPropagation()`)
這會防止觸發它以外的事件
```html
```
Vue 的 Event Modifiers 除了常用的 `.prevent` (等同於 `event.preventDefault()`) 及上面提及的 `.stop` 之外
還有 `.capture`, `.self`, `.once`, `.passive` 等事件修飾符
詳細文件可以參考 [Event Handling](https://vuejs.org/v2/guide/events.html)
### 參考連結
- [Vue.js + Call the click event for whole page document](https://stackoverflow.com/questions/41950432/vue-js-call-the-click-event-for-whole-page-document)
- [Vue.js: Methods 與事件處理 (Event Handling)](https://cythilya.github.io/2017/04/17/vue-methods-and-event-handling/)
- [Vue - Event Handling](https://vuejs.org/v2/guide/events.html)
2020/03/16
[TypeScript] 解決 TS2300: Duplicate identifier 'IteratorResult' 錯誤問題
markdown
今天在做 VS Code 套件編譯時出現以下錯誤訊息: `Duplicate identifier 'IteratorResult'`
有 2 個 *.d.ts 檔案定義相沖突
```
Starting compilation in watch mode...
../../../npm/node_modules/typescript/lib/lib.es2015.iterable.d.ts:41:6 - error TS2300: Duplicate identifier 'IteratorResult'.
41 type IteratorResult = IteratorYieldResult | IteratorReturnResult;
~~~~~~~~~~~~~~
node_modules/@types/node/index.d.ts:74:11
74 interface IteratorResult { }
~~~~~~~~~~~~~~
'IteratorResult' was also declared here.
node_modules/@types/node/index.d.ts:74:11 - error TS2300: Duplicate identifier 'IteratorResult'.
74 interface IteratorResult { }
~~~~~~~~~~~~~~
../../../npm/node_modules/typescript/lib/lib.es2015.iterable.d.ts:41:6
41 type IteratorResult = IteratorYieldResult | IteratorReturnResult;
~~~~~~~~~~~~~~
'IteratorResult' was also declared here.
Found 2 errors. Watching for file changes.
```
### 解決方法
在 `tsconfig.json` 的 `compilerOptions` 區塊加上以下設定, 再重新執行編譯
透過直接跳過 Library 的檢查, 因為它不在我程式碼的控制範圍內, 把它排除即可
```
"skipLibCheck": true,
```
2020/01/30
[.NET Core] 在本地使用 Try .NET
markdown
### 前言
微軟有個很棒的線上執行 .NET 程式的平台 Try .NET,可以到這裡試玩學習 [.NET In-Browser Tutorial](https://dotnet.microsoft.com/learn/dotnet/in-browser-tutorial/1)
而這個 Try .NET 我們也可以下載在本地端使用唷!自己創建 Sample Code 做為教育訓練用也不錯~
### 環境
- Windows 10
- .NET Core 3.1
### 本地使用 Try .NET
安裝文件 [Getting started with dotnet try](https://github.com/dotnet/try/blob/master/DotNetTryLocal.md)
首先需要 .NET Core 2.1 或 3.0 以上 SDK 版本,才能進行以下步驟
#### 安裝 dotnet-try 全域工具
```
dotnet tool update -g dotnet-try
```
#### 開始玩 samples 官方提供 3 種方式,本範例採用第一種最簡單的開始方式,直接使用工具的預設範例 先建立一個新的資料夾,切換至此資料夾位置輸入以下指令 ``` dotnet try demo ```
#### Try .NET demo project 開啟的專案畫面如下,裡面包含使用說明及教學
#### 常用指令 用來驗證執行的 sample code 是否能正確執行 ``` dotnet try verify ``` 有趣嗎?快載來玩玩吧! ### References: - [Try .NET](https://github.com/dotnet/try) - [Try .NET Samples](https://github.com/dotnet/try-samples)

#### 開始玩 samples 官方提供 3 種方式,本範例採用第一種最簡單的開始方式,直接使用工具的預設範例 先建立一個新的資料夾,切換至此資料夾位置輸入以下指令 ``` dotnet try demo ```

#### Try .NET demo project 開啟的專案畫面如下,裡面包含使用說明及教學

#### 常用指令 用來驗證執行的 sample code 是否能正確執行 ``` dotnet try verify ``` 有趣嗎?快載來玩玩吧! ### References: - [Try .NET](https://github.com/dotnet/try) - [Try .NET Samples](https://github.com/dotnet/try-samples)
2019/12/18
[ASP.NET MVC] Visual Studio 2019 v16.4.x 右鍵加入找不到 Area 的問題
2019/11/18
[ASP.NET MVC] 如何在 MVC 專案下使用 Unity.Mvc IoC 依賴注入
markdown
### 前言
在 ASP.NET Core 的環境, 預設早已支援 Dependency Injection (依賴注入) 的設計模式, 但在 ASP.NET MVC 5 以前的專案沒有這樣的功能, 本篇簡單介紹如何使用 Unity.Mvc 套件來達成依賴注入。
### 環境
- Visual Studio 2019 16.3.9
- ASP.NET MVC 5
- .NET Framework 4.7.2
- NuGet 套件: [Unity.Mvc](https://github.com/unitycontainer/aspnet-mvc) 5.11.1 (Author: Unity Open Source Project)
### 在專案中加入 Unity.Mvc



安裝套件完成後,會自動在 App_Start 加入 2 個檔案: `UnityConfig.cs` 及 `UnityMvcActivator.cs`
基本上所有的啟動功能它都做完了, 我們只要針對 `UnityConfig.cs` 這個檔案加入我們的註冊的類型即可 例如:
如果有忘記註冊的類型, 卻被使用到了, 即會出現以下的錯誤訊息
### 程式用法
在 constructor 使用 interface 即會自動注入對應的實體
是不是很方便呢? 前人種樹, 後人乘涼, 現在只要專注去做自己該對應的相關程式, 多餘的設定全都被妥當安排了。
不知道是不是因為它太簡單使用了, 所以專案連 README 文件都沒寫 XD。
所以寫一篇用法以備不時之需, 個人覺得這是目前用過最簡易使用的套件了, 因為幾乎無痛使用啊!!
範例程式: [UnityMvcDemo1](https://github.com/onecentlin/UnityMvcDemo1)
### 相關連結
- [Unity.Mvc](https://github.com/unitycontainer/aspnet-mvc)



安裝套件完成後,會自動在 App_Start 加入 2 個檔案: `UnityConfig.cs` 及 `UnityMvcActivator.cs`

基本上所有的啟動功能它都做完了, 我們只要針對 `UnityConfig.cs` 這個檔案加入我們的註冊的類型即可 例如:



2019/11/16
[EF] 專案使用 Entity Framework 6.3.0 造成無法正確執行 Migration 動作
markdown
### 環境
- VS 2019 16.3.9
- Web Application (.NET Framework) 專案
- Entity Framework 6.3.0
### 問題
在新建立的 Web 專案中, 採用 Entity Framework 6.3.0 版本, 執行 migration 時出現 Path 為空值的錯誤
```
Enable-Migrations : Cannot bind argument to parameter 'Path' because it is null.
```
### 暫時解決方法
降版至 EF 6.2.0
至於修正版本, 將會在 6.4.0 時修正並釋出, 所以 6.3.0 就直接跳過不要用吧!!
### 相關連結
- [EF 6.3.0 PMC commands throw ParameterBindingValidationException when Startup Project is a Web App](https://github.com/aspnet/EntityFramework6/issues/1290)
2019/08/09
[VSCode] 解決 Windows 10 1903 開啟 VSCode 內嵌 Terminal 終端機視窗跳出問題
markdown
### 問題
在 VS Code 開啟終端機時, 命令視窗是跳出式而非內嵌在 VS Code 內
### 環境
- Windows 10 1903 版本
- VS Code 1.36.1
### 解決方法
開啟設定,搜尋 conpty 把選項 Terminal > Integrated: Windows Enable Conpty 勾消即可
### 參考連結
- [Terminal is always launching externally when ConPTY is turned on](https://github.com/microsoft/vscode/issues/73790)
- [Intergrated terminal is pop out](https://github.com/microsoft/vscode/issues/78670)
- [How do I get around the verified bug in Windows 1903 and launch the VSCode integrated terminal?](https://stackoverflow.com/questions/56154957/how-do-i-get-around-the-verified-bug-in-windows-1903-and-launch-the-vscode-integ)

訂閱:
文章 (Atom)