最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

利用angular.copy取消變量的雙向綁定與解析

 更新時間:2016年11月25日 11:46:49   投稿:daisy  
眾所周知AngularJS的雙向綁定在表單應用中強大又方便,但是偶爾會遇到需要解除對象變量的雙向綁定。Angular提供的angular.copy的方法可以實現(xiàn)解除雙向綁定。所以這篇文章就來給大家詳細的介紹下angular.copy,有需要的朋友們可以參考借鑒,下面來一起看看吧。

首先我們來看看示例代碼

<body ng-app="app">
 <div ng-controller="CopyController">
 <div>
 data: <input ng-model="user.data" /><br>
 user.data: {{user.data}} <br>
 user1.data: {{user1.data}} <br>
 <button ng-click="changeData1()">change</button> <br>
 <button ng-click="copy()">copy</button> <br>
 copyData: {{copyUser.data}}
 </div>
 </div>
 <script src="node_modules/angular/angular.min.js"></script>
</body>
<script>
 angular.module('app', [])
 .controller('CopyController', function ($scope) {
 // body...
 $scope.changeData1 = function () {
  // body...
  scope.user1=scope.user1=
scope.user;
  $scope.user1.data = 'is changed';
 }
 $scope.copy = function () {
  // body...
  scope.copyUser=angular.copy(scope.copyUser=angular.copy(
scope.user);
 }
 });
</script>


從上面的演示可以看到,當點擊copy按鈕時,copyData的值就變成了”this is old data”,成功將user的值復制到copyUser.

當點擊change按鈕后,user1和user的值都變成了'is changed',而copyUser的值卻沒有發(fā)生改變。這時候在input輸入框改變值,user和user1的值都會跟著改變,說明了這二者實際上是同一個變量引用。而copyUser沒有發(fā)生變化。

angular.copy 能取消雙向綁定的原理

這跟JavaScript中對象是引用類型有關。

JavaScript中的值類型

在JavaScript中,值分為原始值和引用值兩種類型。

     原始值:存儲在棧(Stack)中的簡單數(shù)據(jù)字段,也就是說,它們的值是直接存儲在變量訪問的位置;

     引用值:存儲在堆(heap)中,也就是說,存儲在變量處的值是一個指針,指向存儲對象的內(nèi)存處。

如下圖所示:

在JavaScript中的對象便是引用值,也就是說對象是通過引用傳遞值的。

所以在上述的代碼中:

對象$scope.user$scope.user1的值都是指向了同一個引用。對于Angular來說,監(jiān)聽變量變化是在監(jiān)聽其對象所引用的地址,所以當對象的引用值發(fā)生了變化,所有指向它的對象都會跟著發(fā)生變化。

所以在Angular中,直接通過對象的賦值是無法解除雙向綁定的。所以要想解除雙向綁定的辦法就是新創(chuàng)建個對象,然后將原有的對象的值賦值給新對象。這不就是JavaScript中的深拷貝嘛。

對的,angular.copy就是Angular提供的 deep copy 的方法。所以通過angular.copy復制出來的對象,既能和原有的對象值保持一致,又不與舊對象指向同一個引用,從而實現(xiàn)了解除對象變量的雙向綁定。

總結

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家學習或者使用Angular.js能有所幫助,如果有疑問大家可以留言交流。

相關文章

  • Angular CLI發(fā)布路徑的配置項淺析

    Angular CLI發(fā)布路徑的配置項淺析

    這篇文章主要給大家介紹了關于Angular CLI發(fā)布路徑的配置項的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-03-03
  • 淺析AngularJS Filter用法

    淺析AngularJS Filter用法

    系統(tǒng)的學習了一下angularjs,發(fā)現(xiàn)angularjs的有些思想根php的模塊smarty很像,例如數(shù)據(jù)綁定,filter。如果對smarty比較熟悉的話,學習angularjs會比較容易一點,這篇文章給大家介紹angularjs filter用法詳解,感興趣的朋友一起學習吧
    2015-12-12
  • AngularJS的ng Http Request與response格式轉換方法

    AngularJS的ng Http Request與response格式轉換方法

    這篇文章主要介紹了AngularJS的ng Http Request與response格式轉換方法,結合實例形式分析了AngularJS實現(xiàn)Request與response格式轉換操作的相關設置與使用技巧,需要的朋友可以參考下
    2016-11-11
  • AngularJS實現(xiàn)的獲取焦點及失去焦點時的表單驗證功能示例

    AngularJS實現(xiàn)的獲取焦點及失去焦點時的表單驗證功能示例

    這篇文章主要介紹了AngularJS實現(xiàn)的獲取焦點及失去焦點時的表單驗證功能,涉及AngularJS使用ng-blur、ng-focus針對表單事件監(jiān)聽相關操作技巧,需要的朋友可以參考下
    2017-10-10
  • 詳解Angular動態(tài)組件

    詳解Angular動態(tài)組件

    本文主要介紹了Angular動態(tài)組件,對此感興趣的同學,可以親自實驗一下。
    2021-05-05
  • Angular.js中angular-ui-router的簡單實踐

    Angular.js中angular-ui-router的簡單實踐

    本篇文章主要介紹了Angular.js中angular-ui-router的簡單實踐,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • Angular2.0實現(xiàn)modal對話框的方法示例

    Angular2.0實現(xiàn)modal對話框的方法示例

    這篇文章主要介紹了Angular2.0實現(xiàn)modal對話框的方法,結合實例形式分析了angular2.0實現(xiàn)modal對話框的樣式、界面及功能等相關操作技巧,需要的朋友可以參考下
    2018-02-02
  • AngularJS $http模塊POST請求實現(xiàn)

    AngularJS $http模塊POST請求實現(xiàn)

    本篇文章主要介紹了AngularJS $http模塊POST請求實現(xiàn),這里整理了詳細的代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • AngularJS表格樣式簡單設置方法示例

    AngularJS表格樣式簡單設置方法示例

    這篇文章主要介紹了AngularJS表格樣式簡單設置方法,結合實例形式分析了AngularJS結合bootstrap針對表格樣式的相關設置技巧,需要的朋友可以參考下
    2017-03-03
  • angularJs在多個控制器中共享服務數(shù)據(jù)的方法

    angularJs在多個控制器中共享服務數(shù)據(jù)的方法

    今天小編就為大家分享一篇angularJs在多個控制器中共享服務數(shù)據(jù)的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09

最新評論

武功县| 广水市| 广丰县| 安化县| 榆社县| 肇庆市| 宝兴县| 余姚市| 三穗县| 玛多县| 繁峙县| 山东省| 梅河口市| 利津县| 盐边县| 罗定市| 凤城市| 双峰县| 大连市| 昆山市| 刚察县| 平江县| 灵台县| 安义县| 兴仁县| 玛曲县| 巴林左旗| 克什克腾旗| 河南省| 陆良县| 丁青县| 庆城县| 宝鸡市| 绥德县| 周至县| 石渠县| 邛崃市| 十堰市| 光泽县| 左云县| 平凉市|