【Web API系列教程】3.6 — 實戰:處理資料(建立JavaScript用戶端)

來源:互聯網
上載者:User

【Web API系列教程】3.6 — 實戰:處理資料(建立JavaScript用戶端)

在本節,你將使用HTML、JavaScript和Knockout.js庫為應用程式建立用戶端。我們將按如下步驟建立用戶端應用:
1, 展示books列表
2, 展示book詳細資料
3, 添加一本新書

Knockout.js庫使用了模型-視圖-視圖模型(MVVM)模式:
1, 模型是在業務域(在本例中是books和authors)中資料在伺服器端的表現形式。
2, 視圖是展示層(HTML)。
3, 視圖模型是維持模型的JavaScript對象。視圖模型是UI的代碼抽象。它不具備HTML表現形式,相反,它表示抽象特徵的視圖,例如”書籍列表“。

視圖被資料繫結到視圖模型。視圖模型的更新將自動反映在視圖中。視圖模型也從視圖中擷取事件,比如按鈕的點擊。

這個實現使得在你的app中修改布局和UI更加容易,因為你可以改變這些綁定而無須任何代碼。例如,你可能以ul的方式展示一個項列表,那麼可以將其改變成表。<喎?http://www.bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vcD4NCjxoMiBpZD0="添加knockout庫">添加Knockout庫

在Visual Studio中,點擊Tools目錄,選擇Library Package Manager。然後選擇Package Manager Console。在Package Manager Console視窗,輸入以下命令:

Install-Package knockoutjs

這條命令將Knockout檔案添加到Scripts檔案夾下。

建立視圖模型

在Scripts檔案夾下添加一個名為app.js的JavaScript檔案。(在Solution Explorer中,右擊Scripts檔案夾,選擇Add,然後選擇JavaScript File。)粘貼以下代碼:

var ViewModel = function () {    var self = this;    self.books = ko.observableArray();    self.error = ko.observable();    var booksUri = '/api/books/';    function ajaxHelper(uri, method, data) {        self.error(''); // Clear error message        return $.ajax({            type: method,            url: uri,            dataType: 'json',            contentType: 'application/json',            data: data ? JSON.stringify(data) : null        }).fail(function (jqXHR, textStatus, errorThrown) {            self.error(errorThrown);        });    }    function getAllBooks() {        ajaxHelper(booksUri, 'GET').done(function (data) {            self.books(data);        });    }    // Fetch the initial data.    getAllBooks();};ko.applyBindings(new ViewModel());

在Knockout中,observable類啟用了資料繫結。當observable的內容改變時,observable會通知所有的資料繫結控制器,所以它們能夠去更新它們自身。(而observable類是一個observable的數組版本。)以此開始,我們的視圖模型有了兩個observable:
1, books維持books列表。
2, error包含如果AJAX調用失敗時的錯誤資訊

該getAllbooks方法產生AJAX調用以得到books列表。然後將其結果添加到books數組中。

而ko.applyBinding方法是Knockout庫的一部分。它使用視圖模型作為一個參數並建立資料繫結。

添加Script Bundle

Bundle是一個在ASP.NET 4.5中出現的新特性,它使得組合或封裝多個檔案進一個檔案更加容易。Bundle減少了向伺服器的請求,而這恰能改進頁面載入時間。

開啟App_Start檔案夾下的BundleConfig.cs檔案,添加如下代碼到RegisterBundles方法。

public static void RegisterBundles(BundleCollection bundles){    // ...    // New code:    bundles.Add(new ScriptBundle("~/bundles/app").Include(              "~/Scripts/knockout-{version}.js",              "~/Scripts/app.js"));}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.