0

这是一个使用指令的简单示例(改编自官方指南) - JSFiddle

<div ng-controller="Controller">
  <my-customer></my-customer>
</div>


angular.module('my-module', [])
.controller('Controller', function($scope) {
     $scope.vojta = { name: 'Vojta', address: '3456 Somewhere Else' };
 })
.directive('myCustomer', function() {
     return {
        restrict: 'E',
        template: 'Name: {{vojta.name}} Address: {{vojta.address}}'
     }
 });

上述指令与其父控制器具有相同的范围。我怎样才能将控制器作为语法做同样的事情?

可以使用隔离范围执行此操作,但我正在寻找一种解决方案,您不会为指令创建单独的范围。有可能吗?

我尝试了controllerAsbindToControllerrequire: '^ngController' 中的所有内容,但没有成功。

4

1 回答 1

1

对于controllerAs语法,在您的控制器中创建一个 ViewModel 对象,其引用this如下:

var vm = this;
vm.vojta = { name: 'Vojta', address: '3456 Somewhere Else' }; //your object

在模板中,您必须使用as为您的控制器提供别名,如下所示:

<div ng-controller="Controller as ctrl"> //now inside this scope use 'ctrl' which acts as the 'scope' of the controller.
  <my-customer></my-customer>
</div>

在您的指令中:

template: 'Name: {{ctrl.vojta.name}} Address: {{ctrl.vojta.address}}' //notice the use of 'ctrl'

在这里工作小提琴

于 2015-10-25T11:49:11.250 回答