Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/455.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 角圆';t对其应用对象更改';s属性_Javascript_Angularjs_Data Binding - Fatal编程技术网

Javascript 角圆';t对其应用对象更改';s属性

Javascript 角圆';t对其应用对象更改';s属性,javascript,angularjs,data-binding,Javascript,Angularjs,Data Binding,我有一个这样的物体: $scope.user = {key: 'j16er48', name: 'Foo', title: 'Bar'} 模板为: <div ng-if="user.key">{{user.name}}</div> 什么也没发生。Angular似乎仍在观察旧对象和键的旧值 在将新对象分配给user之后,我还尝试使用$scope.$apply(),但仍然没有机会 我错过什么了吗 =更新== 经过这么多的测试,我发现在角度范围内有一个非常奇怪的行为。该问题

我有一个这样的物体:

$scope.user = {key: 'j16er48', name: 'Foo', title: 'Bar'}
模板为:

<div ng-if="user.key">{{user.name}}</div>
什么也没发生。Angular似乎仍在观察旧对象和
键的旧值

在将新对象分配给
user
之后,我还尝试使用
$scope.$apply()
,但仍然没有机会

我错过什么了吗

=更新==

经过这么多的测试,我发现在角度范围内有一个非常奇怪的行为。该问题的发生是由于不需要的引用赋值(或者可能是双向绑定)

我有一个名为
defaultUser
的对象,它是:
{key:false,name:'Foo',title:'Bar'}
。假设:

var defaultUser = {key: false, name: null, title: null};

$scope.user = defaultUser;

// here I change a property of $scope.user
$scope.user.key = 'j16er48';

$scope.resetUser = function(){
    // Now defaultUser.key equals 'j16er48'
    alert(defaultUser.key);

    // That's why this line does nothing
    $scope.user = defaultUser;
}
因此,当我再次尝试将
defaultUser
分配给
user
对象时,我认为is已经重置,而
defaultUser
已经更改,并且等于
user
。现在

这正常吗?Angular是否通过引用假定所有赋值?这是双向装订吗?我疯了还是怎么了


您似乎正在使用Angular的旧版本

我创建了两个小提琴,第一个使用Angular 1.1.1(),第二个使用Angular 1.2.1()

他们都有一个非常小的控制器,不遵循任何风格指南,但应该让你的观点得到理解

app.controller('TestController', function ($scope) {
  $scope.user = {key: 'j16er48', name: 'Foo', title: 'Bar'};
  var secondUser = {key: false, name: 'Foo', title: 'Bar'};
  var tmp;

  $scope.changeUser = function () {
    tmp = $scope.user;
    $scope.user = secondUser;
    secondUser = tmp;
  };
});

因此,如果您可以使用Angular的更新版本,请使用它

你的代码一定有问题。你能把它隔离出来并放到plunker中吗?我不能重现你的问题。我把你想做的事情弄得一团糟:@Rob很可能在Omid的情况下这是一个范围继承问题
app.controller('TestController', function ($scope) {
  $scope.user = {key: 'j16er48', name: 'Foo', title: 'Bar'};
  var secondUser = {key: false, name: 'Foo', title: 'Bar'};
  var tmp;

  $scope.changeUser = function () {
    tmp = $scope.user;
    $scope.user = secondUser;
    secondUser = tmp;
  };
});