我有以下代码:
<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>
这是怎么回事,我该怎么办,没有把价值线进入方法?
谢谢
这仅仅是评论和其他答案的扩展,你可以使用的角度,一个简单的例子可以做到这一点在许多方面: -
<!-- 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控制器
这不是你应该做AngularJS的方式。 你应该认真考虑的角度,如果你想使用AngularJS。 请参阅这篇文章( “在AngularJS思考”如果我有一个jQuery的背景是什么? )
所有的DOM操作应在指令完成。 请参阅此页面,我发现真正清楚。 ( http://ng-learn.org/2014/01/Dom-Manipulations/ )
我的猜测是$
未绑定到jQuery的功能,当ng-click
价值进行评估,因为它不是在角范围内曝光。
解决方案ADRESS这样的:
- 揭露范围jQuery函数的地方,如
$scope.$ = $;
在控制器。 - 使
Create
函数参数的如你所说,用var id = $('#id')[0].value;
初 - 我最喜欢的:避免使用jQuery。 如果你把一些数据在
#id
元素,有可能是一个更自然和检索比查询DOM(例如角服务)的AngularJS-习惯的方法。
特别是,如果你的目标元素是一个<input>
元素,然后用ngModel指令值链接到$scope
,这将是在控制器访问属性:
<input ng-model="inputData"/>
JavaScript的你正试图通过为创建函数的参数是不是在创建函数的范围可用。
尝试目标元素以不同的方式。
这是否帮助?