【发布时间】:2014-10-16 10:14: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);
});
}
};
当调用进入 Create 函数时,id 的值是未定义的。
如果我在 Create 函数的开头添加以下行,一切正常:
id = $('#id')[0].value;
如果我发送一个常量值,它会起作用:
<button data-action="bea" ng-click="Create('SomeID');" class="btn">Insert ID</button>
为什么会发生这种情况?如果不将价值线放入方法中,我该如何做到这一点?
谢谢
【问题讨论】:
-
对我来说为什么它应该工作毫无意义!!仍然在广泛的直接 DOM 访问和操作的世界中? This answer 应该可以帮助你重新思考......
-
@PSL 这不是一个很有用的评论。我知道你发给我的链接。你能解释一下我做错了什么吗?
-
这取决于你认为什么是有用的。您在没有完全理解角度概念的情况下混合事物。在控制器的角度世界中,您并没有真正访问 DOM 元素,而是进行数据绑定并让角度管理 DOM。如果您阅读该链接,它将清除很多事情。
#id的元素是什么?输入正确吗?所以你只需在你的控制器中做<input type="text" ng-model="myModel" />,你只需访问它的值$scope.myModel。 Angular 在所有这些事情上都更加固执己见。 -
这里是一个例子,你可以用 angular plnkr.co/edit/IemE00?p=preview 来做到这一点
-
感谢您的样品。我尝试过这个。我对这个解决方案的问题是,如果我有超过 1 个输入,我不能使用相同的方法,因为我使用的是显式名称。还是我错了?
标签: javascript html angularjs angularjs-scope angularjs-ng-click