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

时间:2016-04-19 18:51:45

标签: javascript angularjs

我在ng-click="myMethod(parameter)"元素中有一个<button>。我想使用这个parameter,在我的例子中,它是控制器内的一个字符串,这样我就可以对它进行$scope.parameter.subProperties之类的操作。所以实际上这个参数实际上是现有$ scope.object的别名。

因此,我的目标是在myMethod()的{​​{1}}&#39}中的不同位置重复使用此ng-click,并在相应的{{<button>上执行相同的功能1}} $scope名称标识的对象。

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

object1

这里,作为参数传递的值可以是这样的对象名之一:

.controller('MyCtrl', function($scope){ $scope.object1; $scope.object2; $scope.myMethod = function(arg){ var length = $scope.arg.length; }; })

感谢任何帮助,谢谢。

3 个答案:

答案 0 :(得分:2)

您应该使用括号 resetController: function(controller){ controller.set('isLocked', true); } 代替点符号 [],例如.来动态访问变量< / strong>

$scope[arg].length

并应使用$scope.myMethod = function(arg){ var length = $scope[arg].length; }; 作为字符串,因此请使用parameter代替ng-click="myMethod('parameter')"

答案 1 :(得分:1)

如果您有动态密钥,则需要使用括号表示法

$scope.object1;

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

但是你必须将一个字符串传递给函数。

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

答案 2 :(得分:1)

如果我跟着你,你想要这样的东西:

    <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) 
        }
    };