Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.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/swift/16.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 从ng include controller修改主控制器$scope_Javascript_Angularjs_Scope_Prototype_Angularjs Ng Include - Fatal编程技术网

Javascript 从ng include controller修改主控制器$scope

Javascript 从ng include controller修改主控制器$scope,javascript,angularjs,scope,prototype,angularjs-ng-include,Javascript,Angularjs,Scope,Prototype,Angularjs Ng Include,我有一个标题视图,其控制器包含在我的页面中: <div ng-include="'header.html'" ></div> 我创建了一个plunker演示来说明这个问题 在您的具体情况下,您可以使用: $scope.$parent.$parent.value = 'new value'; 检查一下 但真正的解决方案是使用,或者更好地使用语法。在子范围中更新父范围中的值时,我通常使用以下方法之一: 将对象传递给子对象并更新对象内部的适当性 将函数传递给子作用域并调用此

我有一个标题视图,其控制器包含在我的页面中:

<div ng-include="'header.html'" ></div>
我创建了一个plunker演示来说明这个问题


在您的具体情况下,您可以使用:

$scope.$parent.$parent.value = 'new value';
检查一下


但真正的解决方案是使用,或者更好地使用语法。

在子范围中更新父范围中的值时,我通常使用以下方法之一:

  • 将对象传递给子对象并更新对象内部的适当性
  • 将函数传递给子作用域并调用此函数以更新值
  • 在您的示例中,如果使用选项(1),则如下所示:

    app.js文件

    app.controller('MainCtrl', function($scope) {
      $scope.value = {
        data: 'first value'
      };
    });
    
    app.controller('HeaderCtrl', function($scope) {
      $scope.header = 'from header';
    
      $scope.update = function(){
        $scope.$parent.value.data = 'new value';
      }
    });
    
    不使用
    ng include
    ,但您可以查看


    要进一步了解AngularJS中的作用域,您可以阅读

    没问题。这方面有很多问题,我很乐意帮忙。如果你感兴趣,这是约翰·帕帕的作品。用AngularJS编写更好的代码是一个不错的选择,他还解释了为什么要这样做。
    app.controller('MainCtrl', function($scope) {
      $scope.value = {
        data: 'first value'
      };
    });
    
    app.controller('HeaderCtrl', function($scope) {
      $scope.header = 'from header';
    
      $scope.update = function(){
        $scope.$parent.value.data = 'new value';
      }
    });