angular.js - angularJs 的$範圍
phpcn_u1582
phpcn_u1582 2017-05-15 17:05:33
0
4
553

(1)controller中定義了兩個變數

$scope.a="aaaaa";
$scope.b="bbbbb";

(2)同時定義一個物件用來保存

$scope.object={
    arr:[$scope.a,$scope.b]
}

(3)現在動態修改$scope.a$scope.b的值。
但是$scope.object.arr中的值沒有變,這是為啥呢?不是應該是即時更新的麼?

phpcn_u1582
phpcn_u1582

全部回覆(4)
淡淡烟草味

因為ab都是原始数据类型,在声明object的时候,向arr里填入的就是ab對應的字串本身

所以當你後面再去修改$scope.a$scope.b时,$scope.object並沒跟著一起變。

這就好比,我有兩個蘋果,給了你一個,然後我把我自己的咬了一口,因為蘋果長得一模一樣(假設,是偽命題),於是我期待你手裡的蘋果也出現了一個被咬的豁口。

曾经蜡笔没有小新

你可以使用 $watch

$scope.$watch('a',function(v){
    $scope.object.arr
});
$scope.$watch('b',function(v){
    $scope.object.arr[1] = v;
});
阿神

預設是淺遍歷

滿天的星座

$scope.a,$scope.b為字串,賦值相當於直接賦值字串給陣列。
如果想達到你的目的,可以監聽一下a,b,當a,b發生變化時,再給object賦值。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!