从其他javascript文件更改视图

时间:2014-09-29 14:27:12

标签: javascript angularjs

我们正在开发angularjs并正在解决问题

我们正在通常从控制器内部更改视图,但在这种情况下,我们需要从其他js文件更改视图。

解决这个问题的最佳方法是什么?

我们创建了一个方法:

toShop: function() {
   var e = document.getElementById('appContainer');
        var scope = angular.element(e).scope();
        scope.$apply(function() {
            scope.toShop();
        }); 
    }

但这不起作用,定义了scope对象,但apply函数不起作用。

还有另一种角度来改变控制器外部的视图吗?

编辑,控制器代码:

controllers.controller('HomeCtrl', function($scope, $location) {
    $scope.toShop = function() {
        alert('ruN!');
        $location.url('/shop');
    };
});

第一个js应该运行第二个js的方法

1 个答案:

答案 0 :(得分:0)

当你apply already in progress

时,你得到了着名的$apply错误

最好的方法iv看到这个版本的角度是使用$timeout来检查apply是否已经在运行。 (source

var app = angular.module(' app',[]);

app.controller('myCtrl',function($scope, $location, $timeout) {

   $scope.toShop = function() {
      alert('ruN!');
      $location.url('/shop');
    };

    $scope.toShopExternal = function() {
      $timeout($scope.toShop);
    };
  }
);

您的外部代码

  <script>
    $(function() {
      $("#jquery-button").click(function() {
        var e = document.getElementById('appContainer');
        var scope = angular.element(e).scope();
        scope.toShopExternal();
      });
    });
  </script>

http://plnkr.co/edit/opMH6jc0Ya1hKfSnsx7c?p=preview