Javascript 如何在AngularJS中将变量从父范围传递到子范围

Javascript 如何在AngularJS中将变量从父范围传递到子范围,javascript,angularjs,angularjs-scope,Javascript,Angularjs,Angularjs Scope,我有一个部分页面,代码如下所示: <div class="selector-result row"> <div ng-if="resultCtrl.result"> <div class="col-xs-12"> <h4><strong>We Recommend:</strong></h4> <h2><strong>{

我有一个部分页面,代码如下所示:

<div class="selector-result row">
    <div ng-if="resultCtrl.result">
        <div class="col-xs-12">
            <h4><strong>We Recommend:</strong></h4>
            <h2><strong>{{resultCtrl.result.Name}}</strong></h2>
        </div>
        <div class="row">
            <div class="col-md-4">

                <div ng-controller="selectorResultCarouselController">
                    <div>
                        <div style="height: 305px">
                        <carousel interval="myInterval" no-wrap="false">
                            <slide ng-repeat="slide in slides" active="slide.active" actual="slide">
                            <img ng-src="{{slide.image}}" style="margin:auto;">
                            </slide>
                        </carousel>
                        </div>
                    </div>
                </div>
...

我们建议:
{{resultCtrl.result.Name}
...
我有一个模块,它有一个指令(selectorResult)和一个controllerAs resultCtrl。其中还有一个控制器selectorResultController,用于加载变量“results”

我想做的是将{{resultCtrl.result.AllImages}}以某种方式放入SelectorResultCarouseController,以便将它们添加到我的旋转木马中。我迷路了。我真的很努力地去理解角度,我想我理解这些部件是如何工作的,我只是不理解系统,如果这有意义的话


我只是想在这里稍微推一下。我读了又读又读,但我没有看到任何能说明这个问题的东西。

子范围继承自父范围。所以只需使用$scope.result.AllImages。

子作用域从父作用域继承。所以只需使用$scope.result.AllImages

“子作用域”(原型)从其父作用域继承属性

发件人:

在您的情况下,在您的子作用域中,变量可用作
$scope.result.Allmages

“子作用域”(原型)从其父作用域继承属性

发件人:


在您的情况下,在您的子作用域中,您的变量可用作
$scope.result.Allmages

如果您的指令具有隔离作用域,则必须通过指令定义对象(ddo)中的属性将其绑定。属性&、@和=将允许您执行此操作

scope { myAttribute: '@', myOtherAttribute: '&', myLastAttribute: '='}
在您的指令中,您将使用以下内容:

<my-directive my-attribute="someString" my-other-attribute="someCallbackOnControllerScope()" my-last-attribute="somePropertyOnControllerScopeYouWantToBindTwoWays">
否则,您的ddo可以将作用域属性设置为false,在这种情况下,它将使用父作用域

如果您在ddo中有一个scope属性设置为true,您仍然可以寻址父scope属性(通过引用它,就像您没有子scope/好像它已经在同一个作用域中可用一样),但是如果您这样做(scope:true)并且有多个相同的指令,请小心。。。因为它们将共享相同的范围,因此会相互覆盖

有关更多信息,请查看此页面:


我希望这会有所帮助

如果您的指令具有隔离作用域,则必须通过指令定义对象(ddo)中的属性将其绑定。属性&、@和=将允许您执行此操作

scope { myAttribute: '@', myOtherAttribute: '&', myLastAttribute: '='}
在您的指令中,您将使用以下内容:

<my-directive my-attribute="someString" my-other-attribute="someCallbackOnControllerScope()" my-last-attribute="somePropertyOnControllerScopeYouWantToBindTwoWays">
否则,您的ddo可以将作用域属性设置为false,在这种情况下,它将使用父作用域

如果您在ddo中有一个scope属性设置为true,您仍然可以寻址父scope属性(通过引用它,就像您没有子scope/好像它已经在同一个作用域中可用一样),但是如果您这样做(scope:true)并且有多个相同的指令,请小心。。。因为它们将共享相同的范围,因此会相互覆盖

有关更多信息,请查看此页面:


我希望这有助于

< P>避免<代码> $范围< /代码>混淆,考虑使用。基本上,不是将值附加到
$scope
,而是将它们附加到控制器对象本身。因此:

angular.module('myApp', [])
  .controller('ctrlOne', [function() {
    var self = this;
    self.name = 'ctrlOne';
  }])
  .controller('ctrlTwo', [function() {
    var self = this;
    self.name = 'ctrlTwo';
  }]);


{{one.name}}

{{two.name}}


<代码> > p>为了避免<代码> $范围<代码>混淆,请考虑使用。基本上,不是将值附加到
$scope
,而是将它们附加到控制器对象本身。因此:

angular.module('myApp', [])
  .controller('ctrlOne', [function() {
    var self = this;
    self.name = 'ctrlOne';
  }])
  .controller('ctrlTwo', [function() {
    var self = this;
    self.name = 'ctrlTwo';
  }]);


{{one.name}}

{{two.name}}


angular的控制器具有原型继承,因此您在父控制器中声明的所有内容都将在子控制器中可用。另一种选择是使用工厂/服务。angular的控制器具有原型继承,所以您在父控制器中声明的所有内容都将在子控制器中可用。另一种选择是使用factory/service。我可以发誓我已经尝试过了,但我可能尝试过很多东西,我可能错过了那个。当我在我的子控制器中执行var slides=$scope.result.AllImages时,我得到了一个无法读取的未定义属性“AllImages”。我让它工作了。它是$scope.resultCtrl.result.AllImages。我没有意识到selectorResult是一个孤立的作用域。我可以发誓我已经尝试过了,但是我尝试过很多东西,我可能错过了那个。当我在我的子控制器中执行var slides=$scope.result.AllImages时,我得到了一个undefined的无法读取属性'AllImages'。我让它工作了。它是$scope.resultCtrl.result.AllImages。我没有意识到selectorResult是一个孤立的作用域。我想我以前没有见过controllerAs简洁地演示过这一点。这样看更有意义。我想我以前没有见过controllerAs简洁地演示过这一点。这样看更有意义。