我正在开发一个有角度的应用程序。现在我们有这些指令是面包屑,引导您通过长向导表单。我遇到的一个问题是,如果你在表单的一个部分有错误并点击一个痕迹导回,它不会让你在整个表单中前进(下一个按钮中断)。所以解决这个问题(我相信)是不要让你点击这些面包屑,除非表格没有任何错误。
这些面包屑都在指令中。如何从此外部指令访问表单?我试过了:
$scope.competitionCreateForm
$scope.$competitionCreateForm
competitionCreateForm.$error
等似乎什么都没有用。但是,当我console.log competitionCreateForm
时,我确实看到了实际的表单对象,所以我知道该部分正在运行。
这是指令的样子(coffeescript)
angular.module('App').directive 'breadcrumb', [
'WizardHandler'
(WizardHandler) ->
{
restrict: 'E'
scope:
breadcrumbs: '=breadcrumbs'
placeholder: '@'
templateUrl: 'directives/templates/breadcrumbs.html'
#require: ''
controller: ['$scope', ($scope) ->
# checking right here
$scope.goToStep = (step) ->
$scope.currentStepValid = true
WizardHandler.wizard().goTo(step)
]
}
]
我已经查看了其他答案,但似乎没有效果。也许我需要在我第一次创建表单时添加一些东西,但我不确定。有谁知道如何从外部指令检查我的表单对象的状态?
答案 0 :(得分:1)
因此,通过在指令上使用scope属性,您将为指令创建一个独立的作用域,这意味着该指令无法访问父指令的作用域。
如果您希望继续使用隔离范围,则有两种选择:
您可以像使用breadcrumbs
一样使用双向绑定。
另一种选择是使用单向绑定,即'<'
将表单状态传递给您的指令。这将在该属性更改时更新指令,就像双向绑定一样,但不允许从指令修改表单。
答案 1 :(得分:0)
我能够通过添加
来实现这一目标scope:
breadcrumb: '=breadcrumbs'
placeholder: '@'
form: '?=form'
增加了将表单添加到breadcrumb指令
的功能 breadcrumb[breadcrumb='breadcrumb' form='createForm']