我不断从需要另一个指令的指令中收到此错误。我不明白的是,这段代码在其他页面上运行没有问题。这是一些代码:
正在爆炸的指令:
newco.directive 'signupShippingForm', [
() ->
{
templateUrl: '/pages/signup/billing/shipping_form'
require: ['signupShippingForm', '^addressScrub']
controllerAs: 'ctrl'
link: (scope, element, attrs, ctrls) ->
ctrl = ctrls[0]
addressScrubCtrl = ctrls[1]
ctrl.updateAddress = () ->
addressScrubCtrl.scrubAddress()
controller: ['$scope', 'productService', 'UsStatesCodes'
($scope, productService, UsStatesCodes) ->
ctrl = @
$scope.shippingPackages = productService.shippingPackage()
$scope.states = UsStatesCodes
$scope.toggleBillingInfo = ()->
$scope.billingOption.same = !$scope.billingOption.same
if $scope.billingOption.same
_.extend $scope.shippingInfo, $scope.billingInfo
else
$scope.shippingInfo = {}
ctrl.showShippingToggle = !$scope.showSimpleForm
@
]
}
]
我收到的错误是:
Error: [$compile:ctreq] Controller 'addressScrub', required by directive 'signupShippingForm', can't be found!
我的 HTML 爆炸的地方是:
form(name="updateShippingForm" ng-submit="save(updateShippingForm.$valid, billingInfo, shippingInfo)" autofill-sync)
billing-form-prefill
address-scrub
.container
signup-billing-form(ng-if="true == false")
signup-simple-billing-form(ng-if="true == false")
hr
signup-shipping-form ng-if="true == true"
signup-billing-package(ng-if="true == false")
signup-billing-agreement
所以address-scrub是signupShipping表单的父级,所以我认为^语法会找到它。 ng-ifs 在那里是因为我从字面上复制了该设置当前正在运行的另一种表单中的 HTMl,因此我添加了它们来禁用这些元素。
页面的 Controller 就是:
@newco.controller 'UpdateShippingController', ($location, $routeParams, $scope, userService, BillingInfo) ->
最佳答案
您是否尝试过要求'^^addressScrub'
?
关于javascript - 错误: [$compile:ctreq] Controller required by directive ,找不到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35467234/