Angular項目步驟8——模板鏈接與圖形+步驟9——路由與多視圖

步驟8——模板鏈接與圖形

在這一步,會為手機列表添加縮略圖以及對應的購買信息鏈接。后續步驟中,你將通過鏈接顯示目錄中手機的更多附加(詳細)信息。

現在就為手機列表添加縮略圖

工作區切換到步驟8

數據

注意到在phones.json中包含了每個手機獨一無二的id和圖片鏈接地址。這些鏈接地址都指向app/img/phones/目錄。 app/phones/phones.json(一段手機數據的快照)

[
  {
    ...
    "id": "motorola-defy-with-motoblur",
    "imageUrl": "img/phones/motorola-defy-with-motoblur.0.jpg",
    "name": "Motorola DEFY\u2122 with MOTOBLUR\u2122",
    ...
  },
  ...
]

模板

phone-list.template.html

<div class="container-fluid">
  <div class="row">
    <div class="col-md-2">
      <!--Sidebar content-->

      <p>
        Search:
        <input ng-model="$ctrl.query" />
      </p>

      <p>
        Sort by:
        <select ng-model="$ctrl.orderProp">
          <option value="name">Alphabetical</option>
          <option value="age">Newest</option>
        </select>
      </p>

    </div>
    <div class="col-md-10">
      <!--Body content-->

      <ul class="phones">
        <li ng-repeat="phone in $ctrl.phones | filter:$ctrl.query | orderBy:$ctrl.orderProp" class="thumbnail">
          <a href="#/phones/{{phone.id}}" class="thumb">
            ![]({{phone.imageUrl}})
          </a>
          <a href="#/phones/{{phone.id}}">{{phone.name}}</a>
          <p>{{phone.snippet}}</p>
        </li>
      </ul>

    </div>
  </div>
</div>

為了動態處理鏈接(這在后面將導向手機的詳細介紹頁面),我們給href屬性的賦值中用到了由雙大括號括起來的數據綁定。在步驟2中,我們把{{phone.name}}綁定到一個html元素的內容中,這一步{{phone.id}}將用來綁定到元素屬性中。

我們還為每款手機添加了圖片,這里用到了ngSrc命令,它會阻止瀏覽器在Angular還沒有初始化并能夠正常展開綁定時發出諸如下面一樣的無效URL請求: <code>http://localhost:8000/app/{{phone.imageUrl}}</code>,而是僅僅描述當前元素需要一個src屬性,這個屬性<code>(

</code>,會在Angular初始化好后進行綁定),使用ngSrc指令能始終阻止瀏覽器發出明顯是無效的http請求。

步驟9——路由與多視圖

工作區切換到步驟9

依賴

這一步添加的路由功能是由Angular的ngRoute模塊提供,這是一個獨立于Angular核心框架的模塊。

我們使用Bower來安裝客戶端依賴。這一步驟中我們會更新bower.json配置文件來包含新的依賴關系

{
  "name": "angular-route",
  "version": "1.5.11",
  "license": "MIT",
  "main": "./angular-route.js",
  "ignore": [],
  "dependencies": {
    "angular": "1.5.11"
  }
}

新的依賴關系"angular-route": "~1.2.x"告訴bower安裝版本1.2.x的angular-route組件。我們必須明確告訴bower下載安裝這個依賴。

多視圖、路由與布局模板

我們的程序逐漸強大,也變得更加復雜。本步驟之前,我們只有唯一的視圖來(用來顯示手機列表),并且所有的模板代碼都放置在index.html中。新的步驟中會添加一個視圖來顯示列表中每個設備詳細的信息(詳細說明視圖)。

為了添加詳細說明視圖,我們擴展index.html模板文件來包含兩個視圖,但這將很快引起混亂,為了替代,我們嘗試把index.html轉換到我們稱為布局模板(layout template)其中有模板(布局模板)在所有視圖中通用,其他則是局部模板(partial templates),局部模板只包括當前路由route——視圖當前顯示需要的部分。

在Angular中,程序的路由通過$routeProvider聲明,它是$route服務的提供者。這個服務能容易的把控制器、視圖模板和瀏覽器當前的地址欄信息連接起來。使用這個特性,我們可以實現深層鏈接(deep linking),它可以讓你可以利用瀏覽器歷史(后退和前進)以及收藏標簽。

好了。我蒙圈了。。。

詳情請看

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容