100 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			100 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
|   | --- | |||
|  | title: Control Flow | |||
|  | localeTitle: 控制流 | |||
|  | --- | |||
|  | ## 控制流
 | |||
|  | 
 | |||
|  | ### 条件语句
 | |||
|  | 
 | |||
|  | 使用Vue.js,您可以决定是否在最终显示或不显示一段代码 页面,取决于某些条件。例如,想象一下表单输入 需要一个至少8个字符长的文本:如果用户输入短于8, 应该出现错误信息;但如果输入长于8,则 消息消失。 | |||
|  | 
 | |||
|  | 但让我们举一个更简单的例子。我们想要解决一个问题 消息到柜台: | |||
|  | 
 | |||
|  | ```html | |||
|  | 
 | |||
|  | <div id="app">  | |||
|  |   <p v-if="counter > 10">  | |||
|  |     This message is only rendered when the counter is greater than 10  | |||
|  |   </p>  | |||
|  |  </div>  | |||
|  | ``` | |||
|  | 
 | |||
|  | ```javascript | |||
|  | let app = new Vue({  | |||
|  |   el: '#app',  | |||
|  |   data: {  | |||
|  |     counter: 0  | |||
|  |   }  | |||
|  |  });  | |||
|  | ``` | |||
|  | 
 | |||
|  | 如果你去控制台并开始递增计数器,当它穿过我们的 阈值为10,将显示消息!然后,如果你递减`counter` , 当`counter`低于10时,Vue.js将隐藏消息。为此,我们 使用了指令`v-if` 。 | |||
|  | 
 | |||
|  | 你可能会想,如果有一个`else`为该`if` 。而且有 `v-else` 。请注意, `v-else`将始终 | |||
|  | 
 | |||
|  | *   期待`v-if`之前 | |||
|  | *   指的是页面中最接近的`v-if` | |||
|  | 
 | |||
|  | 让我们改变一下我们的第一个例子来实现这一点。 | |||
|  | 
 | |||
|  | ```html | |||
|  | 
 | |||
|  | <div id="app">  | |||
|  |   <p v-if="counter > 10">  | |||
|  |     This message is only rendered when the counter is greater than 10  | |||
|  |   </p>  | |||
|  |   <p v-else>  | |||
|  |     And this is the "otherwise" option  | |||
|  |   </p>  | |||
|  |  </div>  | |||
|  | ``` | |||
|  | 
 | |||
|  | ```javascript | |||
|  | let app = new Vue({  | |||
|  |   el: '#app',  | |||
|  |   data: {  | |||
|  |     counter: 0  | |||
|  |   }  | |||
|  |  });  | |||
|  | ``` | |||
|  | 
 | |||
|  | 通过改变`counter`值来玩一点,并注意 消息显示。 | |||
|  | 
 | |||
|  | Vue.js也有`v-else-if`指令。 | |||
|  | 
 | |||
|  | ### 循环
 | |||
|  | 
 | |||
|  | Vue.js还可以帮助生成相同代码的多个副本 结构,带有循环。经典示例是动态呈现的列表。 | |||
|  | 
 | |||
|  | ```html | |||
|  | 
 | |||
|  | <div id="app">  | |||
|  |   <ul>  | |||
|  |     <li v-for="item in list">  | |||
|  |       {{ item }}  | |||
|  |     </li>  | |||
|  |   </ul>  | |||
|  |  </div>  | |||
|  | ``` | |||
|  | 
 | |||
|  | ```javascript | |||
|  | let app = new Vue({  | |||
|  |   el: '#app',  | |||
|  |   data: {  | |||
|  |     list: [  | |||
|  |       "shave",  | |||
|  |       "do the dishes",  | |||
|  |       "clean the sink",  | |||
|  |       "pay the bill"  | |||
|  |     ]  | |||
|  |   }  | |||
|  |  });  | |||
|  | ``` | |||
|  | 
 | |||
|  | 比插入很多`<li>`更容易。并注意每当`list` 变化,结果会相应改变。尝试一下:打开控制台和 `push`一些字符串`push`送到`list`中 | |||
|  | 
 | |||
|  | ```javascript | |||
|  | app.list.push("something else");  | |||
|  | ``` | |||
|  | 
 | |||
|  | 正如所料,现在呈现的页面有我们全新的项目! |