如何将args从html传递给js?

时间:2014-07-16 18:31:48

标签: javascript angularjs

我试图以这种方式传递输入值:

HTML

<tr ng-controller="fCtrl as fiche">
    <td>
        <span>
            <input type="checkbox" name="q" ng-model="qo" >
            <input type="checkbox" name="q" ng-model="qa" >
        </span>
    </td>
    <td>
        <button type="submit" class="btn btn-primary" ng-click="fiche.submitEdit(q)">Modifier</button>
    </td>
</tr>

JS

(function(){
    var app = angular.module('m', [ ]);

    app.controller('fCtrl', function(){
        this.submitEdit = function(q){
             alert(q);
        }
    });

})();

但是,这样做我什么都抓不到。我也尝试过使用fiche.submitEdit({{q}}),但它不起作用。请问有什么好主意吗?

非常感谢!

3 个答案:

答案 0 :(得分:0)

当您使用ng-model时,无需传递数据,请尝试

<table ng-app="m">
<tr ng-controller="fCtrl">
<td>
    <span>
        <input type="checkbox" name="q" ng-model="qo" >
        <input type="checkbox" name="q" ng-model="qa" >
    </span>
</td>
<td>
    <button type="submit" class="btn btn-primary" ng-click="submitEdit()">Modifier</button>
</td>
</tr>
</table>
(function(){
var app = angular.module('m', [ ]);

app.controller('fCtrl', function($scope){
    $scope.qo = "";
    $scope.submitEdit = function(){
         alert($scope.qo);
    }
});

})();

答案 1 :(得分:0)

我从未使用控制器别名。 这应该有用吗?

(function(){
var app = angular.module('m', [ ]);

app.controller('fCtrl', ['$scope',function($scope){
    $scope.submitEdit = function(){
         alert($scope.qo);
    }
}]);

})();

在html中只需调用ng-click =&#34; submitEdit()&#34;

答案 2 :(得分:0)

首先,请始终在ng-model中使用一个点。几乎看起来这就是你想要做的事情,当你提交时你会有一个对象q

ng-model的强大功能是,如果范围对象不存在,它将创建范围对象。

在您的情况下,如果您将ng-model更改为q.aq.o,那么您的方法可以正常工作,并且您将在范围内拥有一个对象q属性ao

但是,您还设置了控制器别名,所以现在需要在所有html范围变量前加上该控制器别名

<input type="checkbox" name="q" ng-model="fiche.q.o" >
<input type="checkbox" name="q" ng-model="fiche.q.a" >

<button ng-click="fiche.submitEdit(fiche.q)">


 $scope.submitEdit = function(q){
     alert($scope.q.o);
}

确实没有必要将对象作为参数传递,因为它已作为$scope.q

在范围内存在