Javascript 将传递的函数参数附加到控制器内的$scope

Javascript 将传递的函数参数附加到控制器内的$scope,javascript,angularjs,Javascript,Angularjs,我在元素中有一个ng click=“myMethod(parameter)”。我想使用这个参数,在我的例子中,它是控制器中的一个字符串,这样我就可以对它执行$scope.parameter.subperties之类的操作。因此,实际上,这个参数实际上是现有$scope.object的别名 因此,我的目标是在不同的地方重复使用这个myMethod(),比如ng单击中的,并对参数名称标识的相应$scope对象执行相同的功能 用于查找控制器内object1长度的模拟代码如下: .controller(

我在
元素中有一个
ng click=“myMethod(parameter)”
。我想使用这个
参数
,在我的例子中,它是控制器中的一个字符串,这样我就可以对它执行
$scope.parameter.subperties
之类的操作。因此,实际上,这个参数实际上是现有$scope.object的别名

因此,我的目标是在不同的地方重复使用这个
myMethod()
,比如
ng单击
中的
,并对
参数
名称标识的相应
$scope
对象执行相同的功能

用于查找控制器内
object1
长度的模拟代码如下:

.controller('MyCtrl', function($scope){
    $scope.object1;
    $scope.object2;
    $scope.myMethod = function(arg){
        var length = $scope.arg.length;
    };
})
在这里,作为参数传递的值可以是如下所示的对象名称之一:

查找长度


非常感谢您的帮助。

您应该使用括号符号
[]
而不是点符号
$scope[arg]。使用长度
动态访问变量

$scope.myMethod = function(arg){
   var length = $scope[arg].length;
};

并且应该使用
参数作为字符串,因此使用
ng click=“myMethod('parameter')”
而不是
ng click=“myMethod(parameter)”
当您有一个动态键时,您需要使用括号表示法

$scope.object1;

$scope.myMethod = function (arg) {
    var length = $scope[arg].length;
};
但是您必须向函数传递一个字符串

<button ng-click="myMethod('object1')">Find Length</button>
查找长度

如果我在跟踪你,你会想要这样的东西:

    <div ng-controller="myController as foo">
       <button ng-click="foo.clickyclicky('barney')">Barney</button>
       <button ng-click="foo.clickyclicky('fred')">Fred</button>
    </div>
    function myController() {
        var vm=this;
        vm.barney = {};
        vm.barney.wife = "Betty"
        vm.fred = {};
        vm.fred.wife = "Wilma" 

       function clickyclicky(who) {
           var hubby = vm[who]
           alert(hubby.wife) 
        }
    };

正是我想要的,谢谢!接受这一最合适的答案,正如您指出的
ng click
方法调用的正确语法,该方法调用的参数位于
中。感谢您的快速回复。谢谢,我答对了。欣赏这个例子!