Angularjs Angular ui.bootstrap分页-当前页面未更新/监视未工作
我在Angularjs Angular ui.bootstrap分页-当前页面未更新/监视未工作,angularjs,angularjs-directive,angular-ui,Angularjs,Angularjs Directive,Angular Ui,我在对话框中有一个分页,这两个指令都是ui.bootstrap。问题是,$watch不适用于currentPage成员 现在,类似的代码可以很好地用于某些对话框中没有分页的其他页面 我假设这个问题与$scope有关,但是currentPage在scope中可用,我可以使用{currentPage}在模板上显示它 请在列表中查找代码 $scope.$watch('currentPage')在单击页面链接时未启动 现在,对于解决方法,我可以使用分页指令提供的select页面上的callback e、
对话框中有一个分页
,这两个指令都是ui.bootstrap
。问题是,$watch
不适用于currentPage成员
现在,类似的代码可以很好地用于某些对话框中没有分页的其他页面
我假设这个问题与$scope
有关,但是currentPage
在scope中可用,我可以使用{currentPage}
在模板上显示它
请在列表中查找代码
$scope.$watch('currentPage')
在单击页面链接时未启动
现在,对于解决方法,我可以使用分页指令提供的select页面上的callback
e、 g
但我需要理解为什么在这种情况下,$scope.$watch
不起作用
更新:
以下是控制台中的观察者值
$$watchers: Array[1]
0th: Object
eq: false
exp: "currentPage"
fn: function (o,n){}
使用:
或适当的解决方案:
当涉及嵌套作用域时,将变量绑定到更深的级别,即:
$scope.data.currentPage = ...
细节
示例因为您正在TestCtrl控制器内创建一个新的控制器(ModalDialogBaseCtl),Angular将创建一个新的作用域,该作用域继承其父级的所有属性
在我看来可疑的一行是,在ModalDialogBaseCtrl的开头为$scope.currentPage赋值。Angular将解释为在新范围内声明一个名为currentPage的新变量。但是,分页控件附加到MainCtrl中的currentPage变量,因此查看ModalDialogBaseCtl不会做任何事情(它不会更改值)
一个修复方法是按照Max的建议使用$parent,但这不是一个很好的结构。相反,请设法只使用一个currentPage属性而不是两个属性。首先,我感谢您的努力。谢谢虽然这是可行的。我有一个问题-如果范围错误,如何使用{{currentPage}
在模板上显示currentPage。通过这个问题,我想更好地理解$scope。对于解决方案,我本可以在“选择页面”
属性上使用。请原谅我的回答有问题,但回答错误,今天到目前为止已经是我第17个小时了,我通常会在这么晚的时候出错。作用域是正确的,但当它嵌套时,将变量绑定更深一层,即$scope.data.currentPage,它将正常工作。另请参见工作示例:“这是我的第17个小时”>>没问题:)“当涉及嵌套作用域时,将变量绑定更深一层”>>是有意义的。谢谢你的清理,谢谢。第一种选择对我很有效。。我有一个问题,为什么说第二种解决方案是正确的?将分页属性包装到一个对象解决了$scope.pagination={currentPage:1,TotalPages:1,TotalCount:10};谢谢你首先回答。“创建一个新控制器…将创建一个新范围”>>我知道这一事实。“我在Ctrl开头为$scope.currentPage赋值”>>即使没有这个结果也是一样的。“尝试找到一种方法,只使用一个currentPage属性而不是两个。”>>我想不出一个解决方案,我使用TestCtrl
显示了一个主列表,它使用currentPage
,因此我无法从中删除它。也许你可以在这里提出一些建议。如果我必须使用$parent
访问任何$scope对象,我同意这不是一个很好的结构
$$watchers: Array[1]
0th: Object
eq: false
exp: "currentPage"
fn: function (o,n){}
... page="$parent.currentPage" ...
$scope.data.currentPage = ...