angular.js $scope 没有附加到外部指令中的表单
angular.js $scope not attaching to form in external directive
我正在开发 angular 应用程序。现在我们有这些指令,它们是引导您完成长长的向导表单的面包屑。我遇到的问题之一 运行 是,如果您在表单的一部分中有错误并单击面包屑返回,它不会让您在整个表单中前进(下一个按钮中断)。所以解决这个问题的方法(我相信)是不要让你点击这些面包屑,除非表格没有任何错误。
这些面包屑位于指令中。如何从此外部指令访问表单?我试过:
$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)
]
}
]
我查看了其他答案,但似乎没有效果。也许我在第一次创建表单时需要添加一些东西,但我不确定。有谁知道如何从外部指令检查我的表单对象的状态?
因此,通过在指令上使用范围 属性,您正在为指令创建一个独立的范围,这意味着该指令无法访问父指令的范围。
如果您希望继续使用隔离范围,您有两种选择:
您可以像使用 breadcrumbs
一样使用两种方式绑定。
另一种选择是使用单向绑定,即 '<'
将表单状态传递到您的指令中。这将在 属性 更改时更新指令,就像双向绑定一样,但不允许从指令修改表单。
我可以通过添加
来实现它
scope:
breadcrumb: '=breadcrumbs'
placeholder: '@'
form: '?=form'
增加了选择性地向面包屑指令添加表单的能力
breadcrumb[breadcrumb='breadcrumb' form='createForm']
我正在开发 angular 应用程序。现在我们有这些指令,它们是引导您完成长长的向导表单的面包屑。我遇到的问题之一 运行 是,如果您在表单的一部分中有错误并单击面包屑返回,它不会让您在整个表单中前进(下一个按钮中断)。所以解决这个问题的方法(我相信)是不要让你点击这些面包屑,除非表格没有任何错误。
这些面包屑位于指令中。如何从此外部指令访问表单?我试过:
$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)
]
}
]
我查看了其他答案,但似乎没有效果。也许我在第一次创建表单时需要添加一些东西,但我不确定。有谁知道如何从外部指令检查我的表单对象的状态?
因此,通过在指令上使用范围 属性,您正在为指令创建一个独立的范围,这意味着该指令无法访问父指令的范围。
如果您希望继续使用隔离范围,您有两种选择:
您可以像使用
breadcrumbs
一样使用两种方式绑定。另一种选择是使用单向绑定,即
'<'
将表单状态传递到您的指令中。这将在 属性 更改时更新指令,就像双向绑定一样,但不允许从指令修改表单。
我可以通过添加
来实现它scope:
breadcrumb: '=breadcrumbs'
placeholder: '@'
form: '?=form'
增加了选择性地向面包屑指令添加表单的能力
breadcrumb[breadcrumb='breadcrumb' form='createForm']