Angularjs 1.3新控制器作为语法和指令的问题

时间:2015-05-18 10:10:34

标签: angularjs angularjs-directive angularjs-scope angularjs-controller

直到现在我正在使用Angularjs 1.2普通全局控制器语法,但现在我需要移动1.3并使用新控制器作为语法并避免全局声明作为我们的要求。

现在我正在学习它。但有些我甚至没有使它工作,甚至一些简单的基本应用程序。请找我的Plunker

我的指令中的<h2> {{ctrl1.item }}</h2>{{$scope.subItem}}都没有给出预期的输出。可以任何人帮我修理plunker到out项目和子项目。也可以为我提供一些很好的参考,以便使用1.3和示例教程等熟悉这种新语法

1 个答案:

答案 0 :(得分:1)

在您的plunker中删除$curDir

尝试在Chrome中使用控制台或下次使用。得到错误:

  

错误:[$ injector:unpr]未知提供者:$ curDirProvider&lt; - $ curDir&lt; - mainCtrl

http://plnkr.co/edit/NrThd1?p=preview

旁注:如果您在HTML中看到绑定表达式{{ }},那么AngularJS通常会在控制台输出中出现错误。

您的指令存在问题:

A)

function postLink($scope, $element, $attrs) {
  // This is not valid JavaScript
  template : '<p> I am from New Directive with Item {{$scope.subItem}}</p>';
}

b)没有javascript将该模板附加到该元素。所以你看不到任何东西:

$element.append(template);

- 或 -

$element.append(angular.element(template));

c)使用指令的controllerlink对象毫无意义 - 使用其中一个是一个很好的起点。

d)如果使用controller,则在指令体内使用绑定表达式{{ }}来正常显示数据。另请注意,如果您使用控制器,请确保它在您的指令控制器对象中:

function curDirective() {
  return {
      restrict: 'E',
      controller: 'mainCtrl as vm' // <-- see here
  };
}

修正:

http://plnkr.co/edit/AGB5bp?p=preview