AngularJS:$ scope不从第二个控制器更新视图

时间:2013-07-22 14:05:03

标签: angularjs angularjs-scope angularjs-ng-repeat

我想知道是否有人可以提供帮助?

我有1个html文件和一个通过$ routeProvider分配的控制器,如此

          .when('/', {
            templateUrl: 'views/contents.html',
            controller: 'FirstCtrl'

一切正常,我的观点在对象上做了重复,并且视图更新如此

   <tbody ng-repeat="item in contents.data">
     <tr>        

这段代码工作正常,我通过FirstCtrl更新了我的项目,如此

   $scope.contents = {};
   $scope.contents.data = {...}

我已经将这个功能提取到它自己的控制器中,它仍然是相同的视图,所以我有1个视图和2个控制器......第二个控制器是通过在tbody上指定ng-controller来使用的

   <tbody ng-controller="SecondCtrl" ng-repeat="item in contents.data">
     <tr>

现在我知道控制器正在工作,因为我在a上插入了一个ng-click,它会激活该功能。我也是从我的第二个控制器更新我的$ scope,但它似乎也是空白的..

从文档中可以看出,如果$ scope存在于父控制器中(第一个),那么子控制器会覆盖它(第二个),但这不是我的情况,我没有在第一个控制器中定义它

我甚至尝试了一个简单的

测试
    $scope.testme = "hi";

和视图

    {{ testme }}

什么都没有......就像$ scope不存在一样。

有谁知道最近发生了什么?我正确使用它?

提前致谢

1 个答案:

答案 0 :(得分:3)

如果你正在初始化SecondCtrl中的$ scope.contents,那么你可能正在试验一些$ scope阴影。

尝试在FirstCtrl内部创建“contents”对象并更新数据。不要重新创建内容对象(即不要做&gt;&gt; $scope.contents = {};)只更新数据对象/数组&gt;&gt; $scope.content.data = ...

如果这不能解决您的问题,请您提供一个解决问题的工作小提琴。您可以将此作为起点http://jsfiddle.net/IgorMinar/ADukg/