Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs Angular ui.bootstrap分页-当前页面未更新/监视未工作_Angularjs_Angularjs Directive_Angular Ui - Fatal编程技术网

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 = ...