直到现在我正在使用Angularjs 1.2普通全局控制器语法,但现在我需要移动1.3并使用新控制器作为语法并避免全局声明作为我们的要求。
现在我正在学习它。但有些我甚至没有使它工作,甚至一些简单的基本应用程序。请找我的Plunker。
我的指令中的<h2> {{ctrl1.item }}</h2>
和{{$scope.subItem}}
都没有给出预期的输出。可以任何人帮我修理plunker到out项目和子项目。也可以为我提供一些很好的参考,以便使用1.3和示例教程等熟悉这种新语法
答案 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)使用指令的controller
和link
对象毫无意义 - 使用其中一个是一个很好的起点。
d)如果使用controller
,则在指令体内使用绑定表达式{{ }}
来正常显示数据。另请注意,如果您使用控制器,请确保它在您的指令控制器对象中:
function curDirective() {
return {
restrict: 'E',
controller: 'mainCtrl as vm' // <-- see here
};
}
修正: