Angularjs UI Bootstrap Popover阻止输入提交

时间:2014-08-21 09:15:57

标签: java javascript angularjs angular-ui-bootstrap

我已经按照以下方式使用了Angularjs和ui.bootstrap popover功能,

<form name="frm1" role="form" ng-submit='myFunc()' novalidate="novalidate">
  .... other inputs go here...
<input type="number" ng-pattern="/^[0-9]+$/" name="testNo" ng-model='testNo' required popover="Locate number here" popover-trigger="focus">
<input type="submit" ng-model='funcBtn' value="Submit" ng-click="submitted = true" ng-disabled="value.length=0">
</form>

问题是因为我在提交表单后检查popover="Locate number here" popover-trigger="focus"代码时输入testNo的值未传递给控制器​​。

控制器如下,

app.controller('myCtrl', ['$scope','$location','$log', function($scope,$location,$log)
{
  $log.log('testNo', $scope.testNo);
}]);

如果我从此输入中删除弹出代码,它可以正常工作。我想知道是否有一种特定的方式将popover用于输入。

使用资源ui.bootstrap示例,输入触发器:http://angular-ui.github.io/bootstrap/

1 个答案:

答案 0 :(得分:0)

问题是当前版本的AngularJS只能为给定的DOM元素提供一个范围,并且popover会创建一个子范围,然后由其他指令继承。幸运的是,解决方案很简单。在你的情况ng-model="$parent.$model"中,只需在指令中引用$ parent。 my_var

以下是此问题的popover FAQ

我在自己的自定义指令的内容中遇到了这个问题,但幸运的是,解决方案也很简单:而不是引用$ scope.var,请参阅$ scope.parent.var。简单的解决方案,但需要数小时的调试!