我的角度应用代码:
(function() {
var app = angular.module('checkout', []);
app.controller('TabController', function(){
this.tab2Done=0;
this.setTab2Done= function(newValue){
this.tab2Done = newValue;
};
});
})();
我想从JavaScript函数(函数名称调用)中调用tab2Done
。我在互联网上找到了一个解决方案,我尝试了这种方法,但它没有用。这是我尝试的方法:
拥有ng-controller="TabController"
的div有id="yourControllerElementID"
这是我的javascript函数:
function call(){
alert();
e=$('#yourControllerElementID');
scope=angular.element(e).scope();
scope.$apply(function(){
scope.setTab2Done(1);
});
}
但是我收到了一个错误:
在Scope。$ eval at Scope。$ apply
我做错了什么?
答案 0 :(得分:1)
我认为您的问题是您尝试调用的方法不在您的范围内。看起来您正在使用“Controller as”语法,判断您是在控制器中将此方法设置为“this”。
您可以为您的示例提供一个plunker,但让我尝试使用此代码解决您的问题:
function call(){
var element = angular.element('#yourControllerElementID');
var controller = element.controller();
var scope = element.scope();
scope.$apply(function(){
controller.setTab2Done(1);
});
}
答案 1 :(得分:0)
不确定你在问什么,但你的代码看起来很奇怪,试试吧!也许这可能会给你一个线索:)
angular.module('checkout', []).
controller('TabController', ['$scope', function ($scope) {
$scope.tab2Done=0;
var setTab2Done = function(newValue){
$scope.tab2Done = newValue;
}
//to call the function through the scope
// e.g. from your html <a href='javascript:void(0)' ng-click='call()'></a>
$scope.call = function(){
setTab2Done(1);
}
//call the function directly on this script
setTab2Done(1);
});