學習KnockOut第一篇之Hello World


                                                                   學習KnockOut第一篇之Hello World

        筆者剛開始學習KnockOut。寫的內容就相當於一個學習筆記。且在此處向官網致敬,比較喜歡他們家的Live Example版塊,里面有jsFiddle。至於文檔,輔導章節,也是有的。附上地址:KnockOut。感興趣的話可以看一下的。

        那么,開始。

       

       先寫一個連Hello World級別都算不上的。看了文檔,貌似很簡單的樣子。
      第一步引進ko的js腳本。第二步創建一個ViewModel。第三步創建一個簡單的View,用data-bind綁定。
     一個非常簡單的text綁定。
 1 <!DOCTYPE html>
 2 <html xmlns="http://www.w3.org/1999/xhtml">
 3 <head>
 4     <title></title>
 5 </head>
 6     <body>
 7         <!--下面這行代碼就是一個簡單的view了-->
 8         <p>My English Name is <span data-bind="text:name"></span></p>
 9     </body>
10 </html>
11 <script src="knockout-2.3.0.js"></script>
12   <!--下面這四行代碼就是ViewModel了,一個JavaScript 的Object.-->
13 <script type="text/javascript">
14     var myViewModel = {
15         name: "Ando"
16     };
17   </script>
第一次寫KO

        看下運行結果:

                                              

     

      什么,沒報錯,但是綁定的數據又沒有顯示出來。再看一下文檔先。原來是少一行代碼。
      不能少了它:myViewModel = ko.applyBindings(myViewModel)。得有了它,data-bind屬性才有用,才能被瀏覽器識別,它的作用可以理解為是對KnockOut做一個激活的作用。有了這行代碼后面的text后的name才會有智能提示。所以聰明的做法是 寫了VM,再寫它,最后寫V,寫V時就會有智能提示了。    
 1 <!DOCTYPE html>
 2 <html xmlns="http://www.w3.org/1999/xhtml">
 3 <head>
 4     <title></title>
 5 </head>
 6     <body>
 7         <!--下面這行代碼就是一個簡單的view了-->
 8         <p>My English Name is <span data-bind="text:name"></span></p>
 9     </body>
10 </html>
11 <script src="knockout-2.3.0.js"></script>
12   <!--下面這四行代碼就是ViewModel了,一個JavaScript 的Object.-->
13 <script type="text/javascript">
14     var myViewModel = {
15         name: "Ando"
16     };
17    // 沒有這行代碼也就做不到綁定了。
18     myViewModel = ko.applyBindings(myViewModel);
19 </script>
這行代碼加在ViewModel里

        再總應該綁定成功了吧:

                                              

       是的,成功了。激活KO的代碼可不能忘了。

 

 

      

       樓主欺負我讀書少,沒文化,只寫一個簡單的聲明式綁定,不是說KO能做到自動的刷新UI什么的,那個寫出來才有點意思好不?
       恩,沒欺負你。只是樓主初涉KO,所以寫的比較初級。你說的那個應該是模型狀態改變就自動刷新頁面的那個功能吧。這個我正好學到了。那么就寫一個KO自動刷新頁面的一個Hello World吧。
     你且看一下下面的這代碼。   
 1 <!DOCTYPE html>
 2 <html xmlns="http://www.w3.org/1999/xhtml">
 3 <head>
 4     <title></title>
 5     <script src="knockout-2.3.0.js"></script>
 6 </head>
 7     <body>
 8         <p>First:<input data-bind="value:firstWord" /></p>
 9         <p>Second:<input data-bind="value:secondWord"/></p>
10         <p><span data-bind="text:AllWord"></span></p>
11     </body>
12     <script type="text/javascript">
13         var ViewModel = function(first,second) {
14             this.firstWord = ko.observable(first);
15             this.secondWord = ko.observable(second);
16             this.AllWord = ko.computed(function () {
17                 //注意這下面的兩個“()”是不能掉的。
18                 return this.firstWord() + " " + this.secondWord();
19             },this);
20         };
21         ko.applyBindings(new ViewModel("Hi", "Ando"));
22     </script>
23 </html>
Hello World

      樓主,代碼我是沒看懂,是不是又被你欺負沒文化了,因為始終沒有看到哪有Hello World。

      代碼看懂了Hello World就可以有的。解釋下代碼先。

      ko.observable,是一個相當,非常,很基礎的一個概念,它能做到的就是監控值的變化並且回應它的相應變化。
      ko.computed,它就是計算監控屬性的值(E文較弱,自己單純這樣理解)。比如上面就是將第一個監控的詞和第二個監控的詞拼起來。那么,我們看看會不會有"Hi Ando"在最后給我們顯示出來。
 
                                                 
    
       果然是有的呢。不過,樓主,還是不見Hello World.
      上面說了ko.computed可以計算出被監控值的變化(這里是將兩個被監控的值拼起來),那么,在不改代碼的情況下,如果將頁面上的第一個值改成Hello,把第二個值改成World,會不會下面給我們顯示"Hello World"呢?
       我們試試。果斷成功。因為:
                                                       
 
 
       學習KO的第一篇學習筆記就到這里了。盡管學習的內容比較淺顯且寫博客比較要時間,但是依舊在進步,不是么?也希望我能繼續的將KO學習下去,博客繼續的寫下去,如果能遇上一些能一起學習KO的園友,那也是極好的。

      我現在聽着水墨丹青鳳凰城,坐在椅上,想到懋平的一句話:好似一個君王!

     

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM