Javascript 使用动态变量更新角度中的对象特性

Javascript 使用动态变量更新角度中的对象特性,javascript,angularjs,Javascript,Angularjs,我可能缺少角度渲染和赋值的一些关键组件,但我认为当在控制器范围内更新变量时,它影响的任何区域都会重新评估。然而,在这种简单的情况下,它似乎不起作用 var myApp = angular.module('myApp',[]); function MyCtrl($scope) { $scope.name = 'Superhero'; $scope.specialObject = { whoawhat: $scope.name } } 当我更改“na

我可能缺少角度渲染和赋值的一些关键组件,但我认为当在控制器范围内更新变量时,它影响的任何区域都会重新评估。然而,在这种简单的情况下,它似乎不起作用

var myApp = angular.module('myApp',[]);


function MyCtrl($scope) {
    $scope.name = 'Superhero';

    $scope.specialObject = {
        whoawhat: $scope.name
    }
}


当我更改“name”时,我希望“specialObject.whoawhat”会更新,我也尝试过使用一个函数。如何触发对象属性的更新?

下面是一个可以实现此功能的示例

代码:


var myApp=angular.module('myApp',[]);
//指令('myDirective',function(){});
//工厂('myService',function(){});
函数MyCtrl($scope){
$scope.name='Superhero';
$scope.specialObject={
whoawhat:$scope.name
}
$scope.update=function(){//bind this to change
//在更新对象之前,执行此处需要执行的任何逻辑
$scope.specialObject.whoawhat=$scope.name
}
}

您不直接绑定到对象有什么原因吗?格式问题,在数据准备存储到该属性之前,我必须对数据执行一些额外的功能。您是否可以直接绑定到数据,然后对对象执行额外的功能?技术上是,我可以调用onChange来启动一个处理数据的函数,但是如果我要这样做,我还可以用数据设置变量。如果可能的话,你希望不这样做。你当前的场景是通过继承直接绑定到对象,这就像直接绑定一样。更新对象与直接绑定对象没有什么不同。我将在下面提供答案。让我知道它是否满足您的需要。
<input type="text" ng-model="name" ng-change="update()">

var myApp = angular.module('myApp',[]);

//myApp.directive('myDirective', function() {});
//myApp.factory('myService', function() {});

function MyCtrl($scope) {
   $scope.name = 'Superhero';

   $scope.specialObject = {
       whoawhat: $scope.name
   }

   $scope.update = function(){ //bind this to change

       //do whatever logic you need to do here before updating the object
       $scope.specialObject.whoawhat = $scope.name
   }
}