NG-点击不从DOM带参数(ng-click doesn't take parameters

2019-10-21 03:34发布

我有以下代码:

<input id="id">
<button data-action="bea" ng-click="Create($('#id1')[0].value);" class="btn">Insert ID</button>
<button data-action="bea" ng-click="Create($('#id2')[0].value);" class="btn">Insert ID</button>

在JS,我有:

$scope.Create = function (id){
        if (id === undefined) {
            $scope.data = "You must specify an id";
        } else {
                $scope.data = data;
                console.log(data);
            });
        }
    };

当呼叫进入创建功能id的值是不确定的。

如果我在创建函数的beginging添加下面一行一切工程确定:

id = $('#id')[0].value;

如果我发送一个恒定值,它的工作原理:

<button data-action="bea" ng-click="Create('SomeID');" class="btn">Insert ID</button>

这是怎么回事,我该怎么办,没有把价值线进入方法?

谢谢

Answer 1:

这仅仅是评论和其他答案的扩展,你可以使用的角度,一个简单的例子可以做到这一点在许多方面: -

  <!-- Add a controller -->
  <div ng-controller="MainCtrl"> 
     <!-- Give a model binding to your text input -->
     <input ng-model="userEntry" type="text"/> 
     <!-- ng-click pass which ever argument you need to pass, provided it is an expression that can be evaluated against the scope or any constants -->
     <button data-action="bea" ng-click="Create(userEntry);" class="btn">Insert ID</button>
    <!-- Some simple data binding using interpolation -->
    {{data}}
     <!-- Just for demo on repeater on a list of items on the scope -->
     <div ng-repeat="item in items track by $index">{{item}}</div>
  </div>

实例演示

我2的线美分什么最初尝试做: -

使用而不是直接访问DOM用于获取数据的角度绑定,它确实能帮助你处理仅仅是数据,而无需担心如何访问或呈现在DOM。 如果你认为你需要访问DOM实现业务逻辑的重新思考的设计,如果你真的需要做的,这样做的指令。 角度很自以为是的设计和你在那里做访问DOM时。

  • 一个模型
  • 结合
  • 调节器
  • 所有关于ngmodel控制器


Answer 2:

这不是你应该做AngularJS的方式。 你应该认真考虑的角度,如果你想使用AngularJS。 请参阅这篇文章( “在AngularJS思考”如果我有一个jQuery的背景是什么? )

所有的DOM操作应在指令完成。 请参阅此页面,我发现真正清楚。 ( http://ng-learn.org/2014/01/Dom-Manipulations/ )



Answer 3:

我的猜测是$未绑定到jQuery的功能,当ng-click价值进行评估,因为它不是在角范围内曝光。

解决方案ADRESS这样的:

  • 揭露范围jQuery函数的地方,如$scope.$ = $; 在控制器。
  • 使Create函数参数的如你所说,用var id = $('#id')[0].value;
  • 我最喜欢的:避免使用jQuery。 如果你把一些数据在#id元素,有可能是一个更自然和检索比查询DOM(例如角服务)的AngularJS-习惯的方法。

特别是,如果你的目标元素是一个<input>元素,然后用ngModel指令值链接到$scope ,这将是在控制器访问属性:

<input ng-model="inputData"/>


Answer 4:

JavaScript的你正试图通过为创建函数的参数是不是在创建函数的范围可用。

尝试目标元素以不同的方式。

这是否帮助?



文章来源: ng-click doesn't take parameters from the DOM