从其他javascript文件更改视图

从其他javascript文件更改视图,javascript,angularjs,Javascript,Angularjs,我们正在使用angularjs进行开发,遇到了一个问题 我们通常从控制器内部更改视图,但在这种情况下,我们需要从其他js文件更改视图 解决这个问题的最佳方法是什么 我们创建了一个方法: toShop: function() { var e = document.getElementById('appContainer'); var scope = angular.element(e).scope(); scope.$apply(function() {

我们正在使用angularjs进行开发,遇到了一个问题

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

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

我们创建了一个方法:

toShop: function() {
   var e = document.getElementById('appContainer');
        var scope = angular.element(e).scope();
        scope.$apply(function() {
            scope.toShop();
        }); 
    }
但这不起作用,定义了scope对象,但apply函数不起作用

在Angle中是否有其他方法可以从控制器外部更改视图

编辑,控制器代码:

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

第一个js应该运行第二个js的方法,因此在执行$apply时出现了著名的apply ready in progress错误

在angular的这个版本之前,最好的方法是使用$timeout来检查应用程序是否已经运行

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>

你能提供一个完整的例子吗?这是从外部js文件运行的代码。当你点击f12时有错误吗?已经在progressk中应用了,我正在处理plunkr 4 u。阅读-