Javascript Angularjs:对象属性值不更新

Javascript Angularjs:对象属性值不更新,javascript,angularjs,angularjs-scope,Javascript,Angularjs,Angularjs Scope,我知道有多个问题与我的问题有关,但我仍然无法解决这个问题。我有以下html和JavaScript代码: <!doctype html> <html ng-app="Demo"> <head> <meta charset="utf-8" /> <script src="https://code.jquery.com/jquery-3.2.1.min.js" integrity="sha256-hwg4gsxgFZhOsEEamd

我知道有多个问题与我的问题有关,但我仍然无法解决这个问题。我有以下html和JavaScript代码:

<!doctype html>
<html ng-app="Demo">
<head>
    <meta charset="utf-8" />
    <script src="https://code.jquery.com/jquery-3.2.1.min.js" integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4=" crossorigin="anonymous">      
    </script>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js">     
    </script>

</head>
<body ng-controller="AppController">

        <input type="" name="" ng-model="docs[1].value">
        {{m3.value}}
        {{m4}}

    <script type="text/javascript">
        var app = angular.module('Demo', []);

        app.controller(
            "AppController",
            function( $scope ) {

                $scope.docs=[{value:"first doc"}, {value:"second doc"}];                

                $scope.m3=$scope.docs[1]; 
                $scope.m4=$scope.docs[1].value;

            }
        );


    </script>

</body>
</html>

{{m3.value}
{{m4}}
var app=angular.module('Demo',[]);
应用程序控制器(
“AppController”,
职能($范围){
$scope.docs=[{value:“第一个doc”},{value:“第二个doc”}];
$scope.m3=$scope.docs[1];
$scope.m4=$scope.docs[1]。值;
}
);

当我输入时,
m3.value
会更新,但
m4
不会!我不明白为什么会这样。如有任何评论,我们将不胜感激

声明1:

$scope.m3=$scope.docs[1];
$scope.m4=$scope.docs[1].value; 
此语句存储模型
文档[1]

因此,
{{m3.value}}
将获得更新的模型值

声明2:

$scope.m3=$scope.docs[1];
$scope.m4=$scope.docs[1].value; 
此语句复制实际的基元值


所以,
{{m4}}
仍然得到旧值

语句1:

$scope.m3=$scope.docs[1];
$scope.m4=$scope.docs[1].value; 
此语句存储模型
文档[1]

因此,
{{m3.value}}
将获得更新的模型值

声明2:

$scope.m3=$scope.docs[1];
$scope.m4=$scope.docs[1].value; 
此语句复制实际的基元值


所以,
{{m4}}
仍然得到旧值

好的,所以我解决这个问题的方法是向m3.value添加一个观察者:

$scope.$watch('m3.value', function(){
     console.log('Changing');
     $scope.m4 = $scope.m3.value;
});

现在更新$scope.m4

好的,我解决这个问题的方法是在m3.value中添加一个观察者:

$scope.$watch('m3.value', function(){
     console.log('Changing');
     $scope.m4 = $scope.m3.value;
});

现在更新$scope.m4

谢谢,但是我应该如何绑定到控制器中的docs[1]。值?@user1512681您可以使用
$scope.docs[1]。value
m3.value
来获取控制器中的更新值(主题外)它仍然是双向绑定吗?它会是watchers的一部分吗?@RIYAJKHAN$scope.docs[1]。value不会给我更新的值。@user1512681检查这个值。谢谢,但是我应该如何绑定到控制器中的docs[1]。值?@user1512681您可以使用
$scope.docs[1]。value
m3.value
来获取控制器中的更新值(主题外)它仍然是双向绑定吗?它会是watchers的一部分吗?@RIYAJKHAN$scope.docs[1]。value不会给我更新的值。@user1512681检查这个值。这是唯一对我有效的方法,你建议的ng改变不适合我想要的。请注意,我在这里提供的代码是我的原始代码的简化版本。我显示ng更改只是为了向您显示modal正在更新,不建议您使用代码。这是唯一对我有效的方法,您建议的ng更改不适合我想要的。请注意,我在这里提供的代码是我的原始代码的简化版本,我显示了ng更改,只是为了向您表明modal正在更新,不建议您使用代码