最近在弄一個東西,明明就很簡單的。
不知道為啥有個坑,雙向綁定,不過當有個數組為空時,它不會發送空的數組,而是不發送。
這就坑爹了。導致老是刪不掉。
處理了下,改成驗證為空時,發送'[]‘字符串。
成功。
但是avalon綁定ms-repeat時只能綁數組和對象。
所以在獲取后對它操作。進行轉換成空數組。
但是一直都不成功。
一直都會提示只能綁數組或對象。
參考了其他的例子,並沒有什么區別。
同樣是這樣操作。可就是不行。
今天在調試時,突然發現,是在轉換時出現了問題。
然后換成直接操作引用過來的對象,而不是賦值后我新定義的對象。
因為賦給它的值是一個字符串,而不是一個對象。
【雖然在js里,所有的都是對象 = =。但這有點坑窩,似乎。】
這樣就不會出現這樣的錯誤了。
原來,基本類型是沒有引用傳遞的。而數組、對象、函數則可以。
之前一直搞不清,js幾時的是值傳遞,幾時是引用傳遞。
參考: http://blog.sina.com.cn/s/blog_52132c010102wa81.html 感覺評論比較簡潔
5種基本數據類型:number/string/null/boolean/undefined
引用類型:數組/函數/對象
function chainStore()
{
var store1='Nike China';
var store2=store1;
store1='Nike U.S.A.';
alert(store2); //Nike China
}
chainStore();
基本數據類型的引用及再次賦值操作,等於是:復制了一個值,也就是內存里有兩塊區域,分別保存了相同的兩個值。var store1='Nike China'; 把Nike China賦值給了store1。而var store2=store1; 又開辟一個新內存地址,把Nike China復制,復制而不是賦值,給了store2。現在呢,內存里有兩塊區域:store1和store2,都保存的是Nike China。這個就好理解了吧。所以store1隨便修改,store2還是保持不變。
而引用類型,舉例:function chainStore() {
var store1=['Nike China'];
var store2=store1;
alert(store2[0]); //Nike China
store1[0]='Nike U.S.A.';
alert(store2[0]); //Nike U.S.A.
}
chainStore();
為什么會兩次輸出store2結果不同呢?因為:這個是數組,屬於引用類型。雖然有store1和store2兩個變量,但是在內存中(引用地址)是同一個地址,這個知道指針概念的同學會很好理解。所以第一次var store2=store1; 其實只把引用地址交給了store2.所以兩個store共享同一個【Nike China】,而當修改了store1的時候,那么他們共享的內容就發生了變化(因為一共就這一個東西,而不是各自有一個),導致store2輸出的時候也發生了變化,變成了【Nike U.S.A.】
以上,簡單舉例引用類型,和基本數據類型
不知道為啥有個坑,雙向綁定,不過當有個數組為空時,它不會發送空的數組,而是不發送。
這就坑爹了。導致老是刪不掉。
處理了下,改成驗證為空時,發送'[]‘字符串。
成功。
但是avalon綁定ms-repeat時只能綁數組和對象。
所以在獲取后對它操作。進行轉換成空數組。
但是一直都不成功。
一直都會提示只能綁數組或對象。
參考了其他的例子,並沒有什么區別。
同樣是這樣操作。可就是不行。
今天在調試時,突然發現,是在轉換時出現了問題。
然后換成直接操作引用過來的對象,而不是賦值后我新定義的對象。
因為賦給它的值是一個字符串,而不是一個對象。
【雖然在js里,所有的都是對象 = =。但這有點坑窩,似乎。】
這樣就不會出現這樣的錯誤了。
原來,基本類型是沒有引用傳遞的。而數組、對象、函數則可以。
之前一直搞不清,js幾時的是值傳遞,幾時是引用傳遞。
參考: http://blog.sina.com.cn/s/blog_52132c010102wa81.html 感覺評論比較簡潔
5種基本數據類型:number/string/null/boolean/undefined
引用類型:數組/函數/對象
function chainStore()
{
var store1='Nike China';
var store2=store1;
store1='Nike U.S.A.';
alert(store2); //Nike China
}
chainStore();
基本數據類型的引用及再次賦值操作,等於是:復制了一個值,也就是內存里有兩塊區域,分別保存了相同的兩個值。var store1='Nike China'; 把Nike China賦值給了store1。而var store2=store1; 又開辟一個新內存地址,把Nike China復制,復制而不是賦值,給了store2。現在呢,內存里有兩塊區域:store1和store2,都保存的是Nike China。這個就好理解了吧。所以store1隨便修改,store2還是保持不變。
而引用類型,舉例:function chainStore() {
var store1=['Nike China'];
var store2=store1;
alert(store2[0]); //Nike China
store1[0]='Nike U.S.A.';
alert(store2[0]); //Nike U.S.A.
}
chainStore();
為什么會兩次輸出store2結果不同呢?因為:這個是數組,屬於引用類型。雖然有store1和store2兩個變量,但是在內存中(引用地址)是同一個地址,這個知道指針概念的同學會很好理解。所以第一次var store2=store1; 其實只把引用地址交給了store2.所以兩個store共享同一個【Nike China】,而當修改了store1的時候,那么他們共享的內容就發生了變化(因為一共就這一個東西,而不是各自有一個),導致store2輸出的時候也發生了變化,變成了【Nike U.S.A.】
以上,簡單舉例引用類型,和基本數據類型