我已经按照以下方式使用了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/
答案 0 :(得分:0)
问题是当前版本的AngularJS只能为给定的DOM元素提供一个范围,并且popover会创建一个子范围,然后由其他指令继承。幸运的是,解决方案很简单。在你的情况ng-model="$parent.$model"
中,只需在指令中引用$ parent。 my_var 。
以下是此问题的popover FAQ。
我在自己的自定义指令的内容中遇到了这个问题,但幸运的是,解决方案也很简单:而不是引用$ scope.var,请参阅$ scope.parent.var。简单的解决方案,但需要数小时的调试!