Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.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 根据路径在控制器内使用角度变量_Javascript_Angularjs_Angularjs Scope - Fatal编程技术网

Javascript 根据路径在控制器内使用角度变量

Javascript 根据路径在控制器内使用角度变量,javascript,angularjs,angularjs-scope,Javascript,Angularjs,Angularjs Scope,我想对两个不同的表使用相同的控制器。唯一的区别是一个变量 if($location.path() == '/type_user') { $scope.varName = 'User'; $scope.pathTo = '/users'; $scope.objName = 'users'; }else if($location.path() == '/type_user_params') { $scope.varName = 'Param';

我想对两个不同的表使用相同的控制器。唯一的区别是一个变量

if($location.path() == '/type_user')
{
    $scope.varName  = 'User';   
    $scope.pathTo   = '/users'; 
    $scope.objName  = 'users';

}else if($location.path() == '/type_user_params')
{
    $scope.varName = 'Param';
    $scope.pathTo  = '/params';
    $scope.objName = 'params';

}
然后在这样的函数中使用它:

   $scope.objName.splice($scope.objName .indexOf(xxx),1);
或:

但是我越来越

$scope.objName.push is not a function

这是因为
$scope.objName
是一个字符串在原型中没有push方法

数组的原型()上确实有push方法

您可以使用以下代码将自己的实现添加到字符串中:

String.prototype.push = function(str)
{
    return this + str;
}

var a = 'abc';
var b = a.push('de');
console.log(b); // abcde
var last = $location.path().split('_').pop();
$scope.varName = last.substr(0, 1).toUpperCase() + last.substr(1);
$scope.pathTo  = '/' + last;
$scope.objName = last;
但它不是推荐的

不管怎样,看起来你想要这样的东西:

String.prototype.push = function(str)
{
    return this + str;
}

var a = 'abc';
var b = a.push('de');
console.log(b); // abcde
var last = $location.path().split('_').pop();
$scope.varName = last.substr(0, 1).toUpperCase() + last.substr(1);
$scope.pathTo  = '/' + last;
$scope.objName = last;

这是因为
$scope.objName
是一个字符串在原型中没有push方法

数组的原型()上确实有push方法

您可以使用以下代码将自己的实现添加到字符串中:

String.prototype.push = function(str)
{
    return this + str;
}

var a = 'abc';
var b = a.push('de');
console.log(b); // abcde
var last = $location.path().split('_').pop();
$scope.varName = last.substr(0, 1).toUpperCase() + last.substr(1);
$scope.pathTo  = '/' + last;
$scope.objName = last;
但它不是推荐的

不管怎样,看起来你想要这样的东西:

String.prototype.push = function(str)
{
    return this + str;
}

var a = 'abc';
var b = a.push('de');
console.log(b); // abcde
var last = $location.path().split('_').pop();
$scope.varName = last.substr(0, 1).toUpperCase() + last.substr(1);
$scope.pathTo  = '/' + last;
$scope.objName = last;

如果要将objName用作数组,那么它应该是
$scope.objName=[]


然后可以对数组使用push和pop函数。

如果要将objName用作数组,那么它应该是
$scope.objName=[]

然后您可以对阵列使用推送和弹出功能。

您可以使用解析:

when(
url:'/type_user',
controller: MyController,
resolve: {
    varName  : 'User', 
    pathTo   : '/users', 
    objName  : 'users',
}
)

when(
url:'/type_user_params',
controller: MyController,
resolve: {
    varName  : 'Param', 
    pathTo   : '/params', 
    objName  : 'params',
}
)
然后您可以将它们注入控制器中:

function($scope, varName,pathTo,objName) { ... }
$routeProvider

它很有用,也可以用来获得ajax承诺。在进入控制器之前,必须执行所有承诺。

您可以使用resolve:

when(
url:'/type_user',
controller: MyController,
resolve: {
    varName  : 'User', 
    pathTo   : '/users', 
    objName  : 'users',
}
)

when(
url:'/type_user_params',
controller: MyController,
resolve: {
    varName  : 'Param', 
    pathTo   : '/params', 
    objName  : 'params',
}
)
然后您可以将它们注入控制器中:

function($scope, varName,pathTo,objName) { ... }
$routeProvider


它很有用,也可以用来获得ajax承诺。在进入控制器之前,必须执行所有承诺。

推送是阵列上的一种方法

$scope.objName
是一个字符串。所以你得到了你得到的错误


注意事项:您编写代码的方式很快会让您陷入麻烦。我说的是构建变量的if-else部分

推送是一种基于数组的方法

$scope.objName
是一个字符串。所以你得到了你得到的错误


注意事项:您编写代码的方式很快会让您陷入麻烦。我说的是构建变量的if-else部分

$scope.objName
的值是多少?\是拼接还是切片?拼接与阵列一起使用,其中as切片与字符串一起使用?当我尝试调试您的代码“TypeError:objName.splice不是函数”时出错,
$scope.objName
的值是多少?\是splice还是slice?拼接与阵列一起使用,其中as切片与字符串一起使用?我在调试代码时出错“TypeError:objName.splice不是函数”请解释原因@如果是其他部分,则为A。控制器不需要知道这些差异,它只需要使用给定的值执行。你应该让它更通用。这样明天你就不必再添加其他部分了,看看@Beri写的答案。这是一种可能的重用方法,如果值随位置而变化,请解释原因@如果是其他部分,则为A。控制器不需要知道这些差异,它只需要使用给定的值执行。你应该让它更通用。这样明天你就不必再添加其他部分了,看看@Beri写的答案。如果值随位置而变化,这是一种可能的重用方法