Ran*_*agg 1 html javascript angularjs angularjs-scope angularjs-ng-click
我有以下代码:
<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>
Run Code Online (Sandbox Code Playgroud)
在JS我有:
$scope.Create = function (id){
if (id === undefined) {
$scope.data = "You must specify an id";
} else {
$scope.data = data;
console.log(data);
});
}
};
Run Code Online (Sandbox Code Playgroud)
当调用进入Create函数时,id的值是未定义的.
如果我在Create函数的beginging中添加以下行,一切正常:
id = $('#id')[0].value;
Run Code Online (Sandbox Code Playgroud)
如果我发送一个常量值,它可以工作:
<button data-action="bea" ng-click="Create('SomeID');" class="btn">Insert ID</button>
Run Code Online (Sandbox Code Playgroud)
为什么会发生这种情况,如何在不将价值线放入方法的情况下做到这一点?
谢谢
这只是评论和其他答案的扩展,您可以使用角度在很多方面实现这一点,一个简单的例子可能是: -
<!-- 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>
Run Code Online (Sandbox Code Playgroud)
我最初试图做的2美分: -
使用角度绑定而不是直接访问DOM来获取数据,它确实可以帮助您处理数据,而无需担心如何在DOM中访问或呈现它.如果您认为需要访问DOM以实现业务逻辑,请重新考虑设计,如果您确实需要这样做,请在指令中执行.Angular非常注重设计以及何时进行DOM访问.