Javascript 如何在$scope之外使用函数(错误:函数未定义)
我有一个rzslider,它能为残疾人识别真假。我希望基于函数禁用为true。所以我想禁用它:$scope.truthy 我有一个名为checkDupsName()的函数,如果存在重复项,则checkDupsName应返回true,否则返回false。如果函数返回true,我将$scope.truthy变量设置为true,但问题是,当我在该函数外部(在滑块中)调用它时,它总是falseJavascript 如何在$scope之外使用函数(错误:函数未定义),javascript,angularjs,Javascript,Angularjs,我有一个rzslider,它能为残疾人识别真假。我希望基于函数禁用为true。所以我想禁用它:$scope.truthy 我有一个名为checkDupsName()的函数,如果存在重复项,则checkDupsName应返回true,否则返回false。如果函数返回true,我将$scope.truthy变量设置为true,但问题是,当我在该函数外部(在滑块中)调用它时,它总是false $scope.checkDupsName = function(Mylist) {
$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
也有一个您希望始终检查的默认数组。在这种情况下,请更改上面的代码并使用它。是吗<