46
46
padding-top : 22px ;
47
47
}
48
48
49
- /* 来源:https://blog.csdn.net/qq_39198420/article/details/77973339*/
49
+ /* css 来源:https://blog.csdn.net/qq_39198420/article/details/77973339*/
50
50
* {
51
51
box-sizing : border-box ;
52
52
}
147
147
```
148
148
149
149
- ` v-model ` 指令可以在表单控件上创建** 双向数据绑定** 。具体来说,就是上面的 ` <input> ` 中的数据和 Vue 管理的 ` searchText ` 数据绑定在一起了,其中一个发生变化,另一个也会改变。
150
- - ` v-on:click ` 绑定了按钮的** 鼠标点击事件** ,即点击则触发 ` searchArticles() ` 方法。` .prevent ` 用于阻止按钮原本的提交功能 。
150
+ - ` v-on:click ` 绑定了按钮的** 鼠标点击事件** ,即点击则触发 ` searchArticles() ` 方法。` .prevent ` 用于阻止按钮原本的表单提交功能 。
151
151
152
152
前面章节我们用 ` <router-link> ` 标签实现了路由跳转。在必要时候路由跳转也可以通过脚本来** 动态实现** ,也就是上面代码的 ` this.$router.push(...) ` 了。注意 ` this.$route ` 和 ` this.$router ` ,前者代表路径对象,后者代表路由器对象。
153
153
154
154
总之,点击按钮触发 ` searchArticles() ` ,然后此方法将 ` searchText ` 作为参数跳转到新的路径。
155
155
156
156
## 正餐
157
157
158
- 页面跳转实现了,但是跳转之后还不能够根据路径的中 ` search ` 参数展示筛选后的数据。因此要** 换个战场** ,在 ` ArticleList.vue ` 里进行修改(主要是 Javascript 部分)。
158
+ 页面跳转实现了,但是因为前面章节把 ` get_article_data() ` 方法中的 url 写死为 ` '/api/article' ` 了,所以跳转之后还不能够根据路径的中 ` search ` 参数展示筛选后的数据。因此要** 换个战场** ,在 ` ArticleList.vue ` 里进行修改(主要是 Javascript 部分)。
159
159
160
- 旧的翻页 ` <router-link> ` 仅考虑了路径参数中的 ` page ` 值。为了取得包括 ` page ` 和 ` search ` 的正确路径,新写一个方法 ` get_path() ` :
160
+ 旧的翻页 ` <router-link> ` 仅考虑了路径参数中的 ` page ` 值。为了在翻页后取得包括 ` page ` 和 ` search ` 的正确路径,新写一个方法 ` get_path() ` :
161
161
162
162
``` html
163
163
<!-- frontend/src/components/ArticleList.vue -->
246
246
...
247
247
```
248
248
249
- 这里的代码抛弃了之前用的** 字符串拼接** 的方式,改为专门用户处理路径参数的 ` URLSearchParams() ` 对象。为了将路径中已有的参数添加到 ` URLSearchParams() ` 中,可以用其本身的 ` append() ` 方法,但此方法不能** 判断值是否存在** ,从而获得类似 ` http://localhost:8080/?page=undefined ` 这种错误的路径。
249
+ 这里的代码抛弃了之前用的** 字符串拼接** 的方式,改为专门用于处理路径参数的 ` URLSearchParams() ` 对象。为了将路径中已有的参数添加到 ` URLSearchParams() ` 中,可以用其本身的 ` append() ` 方法,但此方法不能** 判断值是否存在** ,从而获得类似 ` http://localhost:8080/?page=undefined ` 这种错误的路径。
250
250
251
- 解决方法可以在 ` methods ` 里写一个 ` appendIfExists() ` 方法,调用它来排除错误路径。还有一种方法是由于 JavaScript 是基于** 原型链** 的语言,因此可以通过原型链将此方法添加到任何对象中 ,以扩展此对象的功能。
251
+ 解决方法可以在 ` methods ` 里写一个 ` appendIfExists() ` 方法,调用它来排除错误路径。还有一种方法是由于 JavaScript 是基于** 原型链** 的语言,因此可以通过原型链将此方法添加到已有对象中(包括内置原生对象) ,以扩展此对象的功能。
252
252
253
253
具体实施方法就是在 ` main.js ` 中写入:
254
254
@@ -266,11 +266,11 @@ URLSearchParams.prototype.appendIfExists = function (key, value) {
266
266
createApp (App)... ;
267
267
```
268
268
269
- 如此一来, ` URLSearchParams ` 对象就有了这个 ` appendIfExists() ` 了。
269
+ 因为 ` main.js ` 在 Vue 初始化时必然会执行,如此一来 ` URLSearchParams ` 对象就有了这个 ` appendIfExists() ` 了。
270
270
271
- > ** 警告** :以上示例仅供参考。请谨慎扩展原生类型,尤其是如果你的代码将被其他人使用,这可能导致意外的代码行为。建议在扩展方法的名称前加上一些标识符,以便潜在用户可以区分你的代码和原生的方法 。
271
+ > ** 警告** :以上示例仅供参考。请谨慎扩展原生类型,尤其是如果你的代码将被其他人使用,这可能导致意外的代码行为。建议在扩展方法的名称前加上一些标识符,以便潜在用户可以区分你注入的方法和原生的方法 。
272
272
>
273
- > 关于继承、原型链的解释,详见[ 这里 ] ( https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Inheritance_and_the_prototype_chain ) 。关于 URLSearchParams,详见[ 这里 ] ( https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams ) 。
273
+ > 关于继承、原型链的解释,详见[ 原型链 ] ( https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Inheritance_and_the_prototype_chain ) 。关于 URLSearchParams,详见[ URLSearchParams ] ( https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams ) 。
274
274
275
275
把这些脚本写好后,就可以修改路由的** 模板** 了:
276
276
0 commit comments