Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在$scope之外使用函数(错误:函数未定义)_Javascript_Angularjs - Fatal编程技术网

Javascript 如何在$scope之外使用函数(错误:函数未定义)

Javascript 如何在$scope之外使用函数(错误:函数未定义),javascript,angularjs,Javascript,Angularjs,我有一个rzslider,它能为残疾人识别真假。我希望基于函数禁用为true。所以我想禁用它:$scope.truthy 我有一个名为checkDupsName()的函数,如果存在重复项,则checkDupsName应返回true,否则返回false。如果函数返回true,我将$scope.truthy变量设置为true,但问题是,当我在该函数外部(在滑块中)调用它时,它总是false $scope.checkDupsName = function(Mylist) {

我有一个rzslider,它能为残疾人识别真假。我希望基于函数禁用为true。所以我想禁用它:$scope.truthy

我有一个名为checkDupsName()的函数,如果存在重复项,则checkDupsName应返回true,否则返回false。如果函数返回true,我将$scope.truthy变量设置为true,但问题是,当我在该函数外部(在滑块中)调用它时,它总是false

   $scope.checkDupsName = function(Mylist) {
                var i, j, n;
                n = Mylist.length;
                for (i = 0; i < n; i++) {
                    for (j = i + 1; j < n; j++) {
                        if (Mylist[i] === Mylist[j]) {
                            return true;

                        }

                    }
                }

                return false;


            };

$scope.truthy=false;
  $scope.nameList = [];
  var Types = [];

   $scope.loadRuleList = function() {  



                PrioritizeService.getData($scope.prioritizeURL).
                then(function(response) {
                        if (response) {
                            Types = response;
                        }                              


                        for (var k = 0; k < Types.length; k++) {
                           $scope.nameList.push(Types[k].name);
                        } 



                        if($scope.checkDupsName($scope.nameList)) {
                          $scope.truthy=true;
                        }                     

            };

$scope.slider = {
                value: 1,
                options: {
                    floor: 0,
                    ceil: 3,
                    showTicks: true,
                    showTicksValues: true,
                    disabled:$scope.truthy

                }
            };
$scope.checkDupsName=函数(Mylist){
变量i,j,n;
n=Mylist.length;
对于(i=0;i
您正在调用的函数中定义它。您应该将它移到外部,使其成为在作用域中定义/声明的函数,并将其使用的数据作为参数

// initialize it so your code does not blow up in the case of forgotten undefined or null check
$scope.nameList = []; 

$scope.loadRuleList = function() {
    var me = this;
    PrioritizeService.getData($scope.MyURL).
    then(function(response) {

        if (response) {
            Types = response;    
        }                      

        // re-init the nameList field
        me.nameList = [];
        for (var k = 0; k < Types.length; k++) {
            me.nameList.push(Types[k].name)
        }
        //check for duplicates
        var areDups = me.checkDupsName(me.nameList);
    }
}

$scope.checkDupsName = function(listToCheck) {
    var i, j, n;
    n = listToCheck.length;
    for (i = 0; i < n; i++) {
        for (j = i + 1; j < n; j++) {
            if (listToCheck[i] === listToCheck[j]) {
                return true;
            }
        }
    }    
    return false;    
}
//初始化它,以便在忘记未定义或空检查的情况下代码不会爆炸
$scope.nameList=[];
$scope.loadRuleList=函数(){
var me=这个;
优先化服务.getData($scope.MyURL)。
然后(功能(响应){
如果(答复){
类型=响应;
}                      
//重新初始化名称列表字段
me.nameList=[];
对于(var k=0;k
您正在调用的函数中定义它。您应该将它移到外部,使其成为在作用域中定义/声明的函数,并将其使用的数据作为参数

// initialize it so your code does not blow up in the case of forgotten undefined or null check
$scope.nameList = []; 

$scope.loadRuleList = function() {
    var me = this;
    PrioritizeService.getData($scope.MyURL).
    then(function(response) {

        if (response) {
            Types = response;    
        }                      

        // re-init the nameList field
        me.nameList = [];
        for (var k = 0; k < Types.length; k++) {
            me.nameList.push(Types[k].name)
        }
        //check for duplicates
        var areDups = me.checkDupsName(me.nameList);
    }
}

$scope.checkDupsName = function(listToCheck) {
    var i, j, n;
    n = listToCheck.length;
    for (i = 0; i < n; i++) {
        for (j = i + 1; j < n; j++) {
            if (listToCheck[i] === listToCheck[j]) {
                return true;
            }
        }
    }    
    return false;    
}
//初始化它,以便在忘记未定义或空检查的情况下代码不会爆炸
$scope.nameList=[];
$scope.loadRuleList=函数(){
var me=这个;
优先化服务.getData($scope.MyURL)。
然后(功能(响应){
如果(答复){
类型=响应;
}                      
//重新初始化名称列表字段
me.nameList=[];
对于(var k=0;k
您是在被
调用的函数内部定义它,然后
将其移动到外部,使其成为在
作用域上定义/声明的函数,并使其将使用的数据作为参数。因此,如果我将其移动到then上方,是否可以将名称列表作为参数传入?您是在你的函数被
调用,然后被
调用。你应该把它移到外面,让它成为在
作用域上定义/声明的函数,并让它把它使用的数据作为参数。因此,如果我把它移到then上方,我能把名称列表作为参数传入吗?那么我现在应该在滑块中放什么呢?禁用:$scope.checkDupsname(名单)?@Angular-您仍然需要传入一个参数,除非您的
$scope
还有一个您希望始终检查的默认数组。在这种情况下,请更改上面的我的代码并使用它。
名称列表
是在
$scope
上定义的变量吗?在您的方法中,它看起来是在
中声明的局部变量,然后
Action.我想在参数中传入名称列表。我不能这样做,因为这是checkDupsname函数中的一个局部变量???@Angular-correct。您可以将其定义为$scope上的一个字段。我将更改我的示例。然后它变成
$scope.checkDupsname($scope.nameList)
。您唯一关心的是,如果字段为空或未定义,请确保代码不会爆炸。我收到一个错误:vendor.js:11655 TypeError:$scope.checkDupsName不是一个函数,因此我现在应该在滑块中放置什么。已禁用:$scope.checkDupsName(名称列表)?@Angular-您仍然需要传入一个参数,除非您的
$scope
也有一个您希望始终检查的默认数组。在这种情况下,请更改上面的代码并使用它。是吗<