当我点击事件时,ng-model总是未定义的。我想获得所选的值。 别名名称效果很好。
<div ng-if="post.direction != 'digital_in' && post.direction != 'digital_out'">
<label><input data-ng-model="dir" type="radio" name="direction" value="digital_in">digital input</label>
<label><input data-ng-model="dir" type="radio" name="direction" value="digital_out">digital output</label>
{{dir}}
</div>
<td><button type="submit" class="btn btn-warning" ng-click="updatePin(post, alias, direction.value())"><span class="glyphicon glyphicon-edit" aria-hidden="true"></span></button></td>
这是控制器:
$scope.updatePin = function(post, alias, dir){
console.log(post.id);
post.alias = "" + alias;
post.direction = "" + dir;
$http.post('http://localhost:9000/activePinsUpdate?id=' + post.id , post).success(function(data, status) {
$scope.loadData();
});
};
答案 0 :(得分:1)
将 ngValue
与ng-model一起用作对象属性
喜欢这个
<div ng-if="post.direction != 'digital_in' && post.direction != 'digital_out'">
<label><input data-ng-model="post.dir" type="radio" name="direction" ng-value="digital_in">digital input</label>
<label><input data-ng-model="post.dir" type="radio" name="direction" ng-value="digital_out">digital output</label>
{{dir}}
</div>
你可以像你这样在你的ctrl中访问它
post.alias = "" + alias;
post.direction = "" + post.dir;
答案 1 :(得分:1)
ng-if
指令确实创建了一个子范围,该范围是从父范围原型继承的。
对比原型继承意味着什么?
如果您有范围层次结构,则可以访问父范围属性 在子范围内,仅当这些属性是对象时(最初 引用的对象传递给子范围而不创建新的 参考)。但原始数据类型在子级内部无法访问 范围,如果你查看你的代码addCustom范围变量是 原始数据类型。
问题是dir
变量与ng-model
中使用的无线电ng-if
是原始数据类型。因此,当ng-if
呈现div
时,它确实会在那里创建一个具有dir
值的子范围。因此,控制器dir
变量与ng-if
的单选按钮dir
范围变量不同。
要解决此问题,您需要从
更改data-ng-model="dir"
到
data-ng-model="post.dir"
这样就可以使用DOT rule
来跟踪原型继承规则。
从post对象中只有你可以得到值post.dir
按钮,然后不需要传递它dir
的显式值。我不打算解释场景背后究竟发生了什么,因为你可以在这里引用this similar answer,其他方法可以完成这件事。
答案 2 :(得分:0)
您可能需要在小提琴中分享您的代码,这是获得帮助的好方法。
建议: - 您可能需要使用Pre-Angular Binded UI - Angular ui http://angular-ui.github.io/bootstrap/versioned-docs/0.12.0/#/getting_started 如果您是初学者尝试从上面的链接开始因为这些 已经与angularjs结合。所以你不会面对面 问题。
您正在使用Pure Html与角度绑定创建混乱。最后了解角度UI。
解决方案: - 缺少的东西是 ng-value 。
<div ng-if="post.direction != 'digital_in' && post.direction != 'digital_out'">
<label><input data-ng-model="dir" type="radio" name="direction" ng-value="digital_in" ng-checked='true'>digital input</label>
<label><input data-ng-model="dir" type="radio" name="direction" ng-value="digital_out">digital output</label>
{{dir}}
</div>
如果仍无法正常工作
预先定义$scope.dir='digital_in'; // it updates on selecting radio.
$scope.updatePin = function(post, alias, dir){
console.log(post.id);
post.alias = "" + alias;
post.direction = "" + $scope.dir; //value Updates on Check
$http.post('http://localhost:9000/activePinsUpdate?id=' + post.id , post).success(function(data, status) {
$scope.loadData();
});
};
祝你好运!!