Angularjs:父和子范围

时间:2016-04-18 12:20:04

标签: angularjs

第1点

我只是不明白为什么我无法以这种方式{{$scope.parentcities}}访问子控制器属性。但如果我这样写{{parentcities}}那么它就会起作用。那么为什么我们不能写$scope dot and then property name

<div ng-app ng-controller="ParentCtrl">
    <div ng-controller="ChildCtrl as vm">
       {{$parent.cities}}
       <br>
       {{$scope.parentcities}}
    </div>
</div>

function ParentCtrl($scope) {
    $scope.cities = ["NY", "Amsterdam", "Barcelona"];
}

function ChildCtrl($scope) {
    $scope.parentcities = $scope.$parent.cities;
}

第2点

需要一些指导线,ChildCtrl是什么样的语法作为vm?

当我们需要在html ChildCtrl中提到控制器像这样的vm?

它有什么特殊意义吗?

寻求一些指导。感谢

2 个答案:

答案 0 :(得分:1)

嗯,$ scope的要点是,在将值绑定到视图时,您不需要编写它。因此,$scope.supervalue = 'Hallo'将在此视图中访问{{ supervalue }} $parent。就是这样。

var self = this; self.supervariable = 'Hallo'; 是从Angular框架到reference the parent scope的关键字。

使用controllerAs语法来完全摆脱$ scope关键字。所以在控制器内部,你可以这样写:

controllerAs: 'vm'

在此路线的配置中,您指定{{ vm.supervariable }}。因此,您可以通过controllerAs在视图中访问您的值。 Have a look here了解所有相关信息。

但是,在你深入研究oList.bindItems({ path: "/ProductCollection", template: new sap.m.StandardListItem({ title: "{Name}", description: "{ProductId}", icon: "{ProductPicUrl}" }) }); 之前,你似乎应该先做一些基础工作并了解基本的角度机制,后面有一些棘手的部分。

答案 1 :(得分:0)

只要您要使用fieldAppearance.setNormalCaption("Click Me"); 语法,请为Ctrl as c变量指定值

this
function ParentCtrl($scope) {
  $scope.cities = ["NY", "Amsterdam", "Barcelona"];
}

function ChildCtrl($scope) {
  this.parentcities = $scope.$parent.cities;
}