引用范围之外的角度函数

时间:2015-08-11 16:31:36

标签: javascript angularjs

我大致有以下代码。如何在角度代码之外访问myFunction()?非常感谢帮助。 ng-click不能用于我正在进行的DOM操作,但ng-repeat不能正常工作。我可以让onclick事件在生成的内容中工作。

var app = angular.module('main', ['ui.bootstrap', 'ngTable']).controller('x', function ($scope, $filter, $http, $q, ngTableParams, $window) {

    var myFunction = function(){
        some angular stuff
    }

}

//javascript
function testFunction(){
    angular.element(document.getElementById('x')).scope().myFunction();
}

以上代码是我从搜索中找到的代码,并不能按照我的意愿运行。在控制台中给出错误:无法读取未定义的属性“myFunction”

编辑:这是我正在做的DOM操作... myFunction将id作为在我的实际实现中传递的参数。

usersArray[] //populated object array with name and id

$scope.generateUsers = function(){
    for(var i = 0; i < usersArray.length; i++){
        document.getElementById("container").innerHTML += "<div ng-click='myFunction(" + usersArray[i].id + ")'> usersArray[i].name + "</div><br />";
    }
}

解决方案:

如果我将代码更改为:

,则在javascript函数中

function testFunction(supUserId) {
    angular.element(document.getElementById('HTMLElementId')).scope().myFunction();
}

将元素从控制器(在我的情况下为x)更改为页面正文中的HTML元素。

1 个答案:

答案 0 :(得分:1)

myfunction未在范围内声明。可以像下面的代码一样添加你的myfunction

var app = angular.module('main', ['ui.bootstrap', 'ngTable']).controller('x', 
function ($scope, $filter, $http, $q, ngTableParams, $window) {
    $scope.myFunction = function(){
        some angular stuff
    }
}