Data binding ng单击范围属性未按预期更新

Data binding ng单击范围属性未按预期更新,data-binding,angularjs,angularjs-ng-click,Data Binding,Angularjs,Angularjs Ng Click,我不知道角度如何更新范围上的属性。这是我的代码的一个人工版本。我希望$scope.name在$scope.open更改时自动更新 查看 {{name}} 控制器 var MyCtrl=function($scope){ if(typeof$scope.open==‘未定义’){ $scope.open=true; } $scope.name=$scope.open?“伊利亚”:“蔡利”; $scope.click=函数(){ $scope.open=!$scope.open; }; };

我不知道角度如何更新范围上的属性。这是我的代码的一个人工版本。我希望
$scope.name
$scope.open
更改时自动更新

查看


{{name}}
控制器

var MyCtrl=function($scope){
if(typeof$scope.open==‘未定义’){
$scope.open=true;
}
$scope.name=$scope.open?“伊利亚”:“蔡利”;
$scope.click=函数(){
$scope.open=!$scope.open;
};
};
我可以在
单击
回调中更新
$scope.name
,但我希望angular能帮我做到这一点

var MyCtrl=function($scope){
if(typeof$scope.open==‘未定义’){
$scope.open=true;
$scope.name=“伊利亚”;
}        
$scope.click=函数(){
$scope.open=!$scope.open;
$scope.name=$scope.open?“伊利亚”:“蔡利”;
};
};

我是做错了什么,还是这是预期的行为?

如果您希望
名称
打开
更改时自动更新,您可以使用:

注册在watchExpression更改时执行的侦听器回调

像这样:

var MyCtrl=function($scope){
$scope.$watch('open',function(){
$scope.name=$scope.open?“伊利亚”:“蔡利”;
});
$scope.open=typeof$scope.open=='undefined'?true:$scope.open;
$scope.click=函数(){
$scope.open=!$scope.open;
};
};

工作示例:

如果希望在
打开时自动更新
名称
,可以使用:

注册在watchExpression更改时执行的侦听器回调

像这样:

var MyCtrl=function($scope){
$scope.$watch('open',function(){
$scope.name=$scope.open?“伊利亚”:“蔡利”;
});
$scope.open=typeof$scope.open=='undefined'?true:$scope.open;
$scope.click=函数(){
$scope.open=!$scope.open;
};
};
工作示例: