我们正在开发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的方法
答案 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>