<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                在這一步你將學習到如何創建自己的顯示過濾器。 請重置工作目錄: ~~~ git checkout -f step-9 ~~~ 現在轉到一個手機詳細信息頁面。在上一步,手機詳細頁面顯示“true”或者“false”來說明某個手機是否具有特定的特性。現在我們使用一個定制的過濾器來把那些文本串圖形化:√作為“true”;以及×作為“false”。來讓我們看看過濾器代碼長什么樣子。 步驟8和步驟9之間最重要的不同在下面列出。你可以在[GitHub](https://github.com/angular/angular-phonecat/compare/step-8...step-9)里看到完整的差別。 ## 定制過濾器 為了創建一個新的過濾器,先創建一個`phonecatFilters`模塊,并且將定制的過濾器注冊給這個模塊。 app/js/filters.js ~~~ angular.module('phonecatFilters', []).filter('checkmark', function() { return function(input) { return input ? '\u2713' : '\u2718'; }; }); ~~~ 我們的過濾器命名為checkmark。它的輸入要么是`true`,要么是`false`,并且我們返回兩個表示true或false的unicode字符(`\u2713和\u2718`)。 現在我們的過濾器準備好了,我們需要將我們的`phonecatFilters`模塊作為一個依賴注冊到我們的主模塊`phonecat`上。 app/js/app/js ~~~ ... angular.module('phonecat', ['phonecatFilters']). ... ~~~ ## 模板 由于我們的模板代碼寫在`app/js/filter.js`文件中,所以我們需要在布局模板中引入這個文件。 app/index.html ~~~ ... <script src="js/controllers.js"></script> <script src="js/filters.js"></script> ... ~~~ 在AngularJS模板中使用過濾器的語法是: ~~~ {{ expression | filter }} ~~~ 我們把過濾器應用到手機詳細信息模板中: app/partials/phone-detail.html ~~~ ... <dl> <dt>Infrared</dt> <dd>{{phone.connectivity.infrared | checkmark}}</dd> <dt>GPS</dt> <dd>{{phone.connectivity.gps | checkmark}}</dd> </dl> ... ~~~ ## 測試 過濾器和其他組件一樣,應該被測試,并且這些測試實際上很容易完成。 test/unit/filtersSpec.js ~~~ describe('filter', function() { beforeEach(module('phonecatFilters')); describe('checkmark', function() { it('should convert boolean values to unicode checkmark or cross', inject(function(checkmarkFilter) { expect(checkmarkFilter(true)).toBe('\u2713'); expect(checkmarkFilter(false)).toBe('\u2718'); })); }); }); ~~~ 注意在執行任何過濾器測試之前,你需要為`phonecatFilters`模塊配置我們的測試注入器。 執行`./scripts/test/sh`運行測試,你應該會看到如下的輸出: ~~~ Chrome: Runner reset. .... Total 4 tests (Passed: 4; Fails: 0; Errors: 0) (3.00 ms) Chrome 19.0.1084.36 Mac OS: Run 4 tests (Passed: 4; Fails: 0; Errors 0) (3.00 ms) ~~~ ## 練習 * 現在讓我們來練習一下[AngularJS內置過濾器](http://code.angularjs.org/1.1.0/docs/api/ng.$filter),在index.html中加入如下綁定: * `{{ "lower cap string" | uppercase }}` * `{{ {foo: "bar", baz: 23} | json }}` * `{{ 1304375948024 | date }}` * `{{ 1304375948024 | date:"MM/dd/yyyy @ h:mma" }}` * 我們也可以用一個輸入框來創建一個模型,并且將之與一個過濾后的綁定結合在一起。在index.html中加入如下代碼: Uppercased: {{ userInput | uppercase }} ## 總結 現在你已經知道了如何編寫和測試一個定制化插件,在[步驟10](a00d)中我們會學習如何用AngularJS繼續豐富我們的手機詳細信息頁面。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看