Angularjs Angular.js$watch-一个字符串将成功传播,但一个变量赢了';T

Angularjs Angular.js$watch-一个字符串将成功传播,但一个变量赢了';T,angularjs,angularjs-scope,watch,Angularjs,Angularjs Scope,Watch,我的代码中有以下视图: <div data-ng-controller="HelloCtrl"> {{counties.selected}} </div> 但是,当$scope.countries.selected设置为以下变量时,html不会更新控制台日志(newValue)显示newValue已设置预期值: $scope.$watch('counties.selected', function(newValue, oldValue) { cons

我的代码中有以下视图:

<div data-ng-controller="HelloCtrl">
    {{counties.selected}}
</div>   
但是,当
$scope.countries.selected
设置为以下变量时,html不会更新<代码>控制台日志(newValue)显示newValue已设置预期值:

$scope.$watch('counties.selected', function(newValue, oldValue) {
   console.log(newValue);
   $scope.counties.selected = newValue;
}))


为什么不将
newValue
传播到html?

您不需要$watch这个值。它将自动更新

下面是watcher的工作示例,但是这个
$watch
有多余部分


您不需要$watch这个值。它将自动更新

下面是watcher的工作示例,但是这个
$watch
有多余部分


您不需要$watch这个值。它将自动更新

下面是watcher的工作示例,但是这个
$watch
有多余部分


您不需要$watch这个值。它将自动更新

下面是watcher的工作示例,但是这个
$watch
有多余部分


我将使用工厂在两个控制器之间传递数据。我们可以将CountiesFactory作为依赖项注入注入两个控制器,修改一个控制器中的对象将影响另一个控制器中的值

JS

angular.module('testApp', [])
.controller('MyFirstCtrl', function($scope, CountiesFactory) {
    $scope.temp = CountiesFactory;
})
.controller('MySecondCtrl', function($scope, CountiesFactory) {
    $scope.counties = CountiesFactory;
})
.factory('CountiesFactory', function() {
    return {
        options: [
            {
                text: 'blah blah',
                value: 1
            },
            {
                text: 'meh meh',
                value: 2
            }            
        ]
    }
})
HTML

<body ng-app='testApp'>
    <div ng-controller='MyFirstCtrl'>
        <select ng-model='temp.selected' ng-options='option.text for option in temp.options'></select>
    </div>

    <div ng-controller='MySecondCtrl'>
        {{ counties.selected }}
    </div>


</body>

{{countries.selected}}

我将使用工厂在两个控制器之间传递数据。我们可以将CountiesFactory作为依赖项注入注入两个控制器,修改一个控制器中的对象将影响另一个控制器中的值

JS

angular.module('testApp', [])
.controller('MyFirstCtrl', function($scope, CountiesFactory) {
    $scope.temp = CountiesFactory;
})
.controller('MySecondCtrl', function($scope, CountiesFactory) {
    $scope.counties = CountiesFactory;
})
.factory('CountiesFactory', function() {
    return {
        options: [
            {
                text: 'blah blah',
                value: 1
            },
            {
                text: 'meh meh',
                value: 2
            }            
        ]
    }
})
HTML

<body ng-app='testApp'>
    <div ng-controller='MyFirstCtrl'>
        <select ng-model='temp.selected' ng-options='option.text for option in temp.options'></select>
    </div>

    <div ng-controller='MySecondCtrl'>
        {{ counties.selected }}
    </div>


</body>

{{countries.selected}}

我将使用工厂在两个控制器之间传递数据。我们可以将CountiesFactory作为依赖项注入注入两个控制器,修改一个控制器中的对象将影响另一个控制器中的值

JS

angular.module('testApp', [])
.controller('MyFirstCtrl', function($scope, CountiesFactory) {
    $scope.temp = CountiesFactory;
})
.controller('MySecondCtrl', function($scope, CountiesFactory) {
    $scope.counties = CountiesFactory;
})
.factory('CountiesFactory', function() {
    return {
        options: [
            {
                text: 'blah blah',
                value: 1
            },
            {
                text: 'meh meh',
                value: 2
            }            
        ]
    }
})
HTML

<body ng-app='testApp'>
    <div ng-controller='MyFirstCtrl'>
        <select ng-model='temp.selected' ng-options='option.text for option in temp.options'></select>
    </div>

    <div ng-controller='MySecondCtrl'>
        {{ counties.selected }}
    </div>


</body>

{{countries.selected}}

我将使用工厂在两个控制器之间传递数据。我们可以将CountiesFactory作为依赖项注入注入两个控制器,修改一个控制器中的对象将影响另一个控制器中的值

JS

angular.module('testApp', [])
.controller('MyFirstCtrl', function($scope, CountiesFactory) {
    $scope.temp = CountiesFactory;
})
.controller('MySecondCtrl', function($scope, CountiesFactory) {
    $scope.counties = CountiesFactory;
})
.factory('CountiesFactory', function() {
    return {
        options: [
            {
                text: 'blah blah',
                value: 1
            },
            {
                text: 'meh meh',
                value: 2
            }            
        ]
    }
})
HTML

<body ng-app='testApp'>
    <div ng-controller='MyFirstCtrl'>
        <select ng-model='temp.selected' ng-options='option.text for option in temp.options'></select>
    </div>

    <div ng-controller='MySecondCtrl'>
        {{ counties.selected }}
    </div>


</body>

{{countries.selected}}


为什么有$scope.$监视“countries.selected”,然后修改$scope.countries?在控制器中直接更改$scope.countries.selected不会导致视图更新吗?这是我所期望的,但更新没有发生。我正在试图找出如何将更改传播到包含
{{countries.selected}}
的所有视图。为什么在“countries.selected”上有$scope.$watch,然后修改$scope.countries?在控制器中直接更改$scope.countries.selected不会导致视图更新吗?这是我所期望的,但更新没有发生。我正在试图找出如何将更改传播到包含
{{countries.selected}}
的所有视图。为什么在“countries.selected”上有$scope.$watch,然后修改$scope.countries?在控制器中直接更改$scope.countries.selected不会导致视图更新吗?这是我所期望的,但更新没有发生。我正在试图找出如何将更改传播到包含
{{countries.selected}}
的所有视图。为什么在“countries.selected”上有$scope.$watch,然后修改$scope.countries?在控制器中直接更改$scope.countries.selected不会导致视图更新吗?这是我所期望的,但更新没有发生。我试图找出如何将更改传播到包含
{{countries.selected}}
的所有视图中。只有当
{{countries.selected}
与我用来更新模型的
位于同一视图中时,更新才会自动发生。我试图做的是在另一个视图中更新“{countries.selected}}”。@user1577173如果您创建controller
HelloCtrl
的另一个实例,那么您将创建另一个
$scope
和其他
countries.selected
值@user1577173如果希望在控制器之间共享数据,则需要创建服务。只有当
{{countries.selected}
与我用来更新模型的
在同一视图中时,更新才会自动发生。我试图做的是在另一个视图中更新“{countries.selected}}”。@user1577173如果您创建controller
HelloCtrl
的另一个实例,那么您将创建另一个
$scope
和其他
countries.selected
值@user1577173如果希望在控制器之间共享数据,则需要创建服务。只有当
{{countries.selected}
与我用来更新模型的
在同一视图中时,更新才会自动发生。我试图做的是在另一个视图中更新“{countries.selected}}”。@user1577173如果您创建controller
HelloCtrl
的另一个实例,那么您将创建另一个
$scope
和其他
countries.selected
值@user1577173如果希望在控制器之间共享数据,则需要创建服务。只有当
{{countries.selected}
与我用来更新模型的
在同一视图中时,更新才会自动发生。我试图做的是在另一个视图中更新{{countries.selected}}。@user1577173如果您创建了controller
HelloCtrl
的另一个实例,那么您就创建了另一个
$scope