Javascript 如何将范围值传递给a<;输入>;元素'value'属性 我想将范围值传递给隐藏的输入类型,但无法传递
我有一个下拉列表,我想将scope变量传递给输入类型,但它不起作用。代替PremiumVal,它应该是75 htmlJavascript 如何将范围值传递给a<;输入>;元素'value'属性 我想将范围值传递给隐藏的输入类型,但无法传递,javascript,html,angularjs,Javascript,Html,Angularjs,我有一个下拉列表,我想将scope变量传递给输入类型,但它不起作用。代替PremiumVal,它应该是75 html 删除{{}并使用ng value而不是value <input type="hidden" name="premium" ng-value="premiumVal" onchange="save('atgb')"> 听起来您可能在模板中的某个地方创建了一个独立的作用域。这可以通过ngIf和其他方式创建。你可能需要“魔法点” $scope.info={} ... $s
删除
{{}
并使用ng value
而不是value
<input type="hidden" name="premium" ng-value="premiumVal" onchange="save('atgb')">
听起来您可能在模板中的某个地方创建了一个独立的作用域。这可以通过ngIf和其他方式创建。你可能需要“魔法点”
$scope.info={}
...
$scope.info.premiumVal=response.data[0].premiumVal;
AngularJS通过提供自己的事件处理循环来修改正常的JavaScript流。这将JavaScript分为经典和AngularJS执行上下文。只有在AngularJS执行上下文中应用的操作才会受益于AngularJS数据绑定、异常处理、属性监视等
当控制器更新范围时,更改不会立即传播到输入值
属性。首先,AngularJS浏览器事件循环需要更新输入的属性值。然后浏览器事件循环需要根据新的值
属性更新值
属性
app.controller("ctrl",function($scope,$timeout) {
$scope.premiumVal = "75";
elem = document.getElementById("my-hidden");
console.log("scope",$scope.premiumVal);
console.log("attr.value",elem.attributes.value);
console.log("elem.value",elem.value);
$scope.$evalAsync(function() {
//THESE ARE EXECUTED ON NEXT AngularJS framework tick
console.log("$evalAsync attr",elem.attributes.value);
console.log("$evalAsync elem",elem.value);
})
$timeout(function() {
//THESE ARE EXECUTED ON NEXT browser tick
console.log("$timeout attr",elem.attributes.value);
console.log("$timeout elem",elem.value);
})
})
函数延迟console.log
语句,允许AngularJS事件循环更新属性值
<input type="hidden" name="premium" ng-value="premiumVal" onchange="save('atgb')">
函数延迟console.log
语句,允许浏览器事件循环更新元素值
<input type="hidden" name="premium" ng-value="premiumVal" onchange="save('atgb')">
任何需要使用新值的代码都需要适当延迟
有关详细信息,请参阅
角度模块(“应用程序”,[])
.controller(“ctrl”,函数($scope,$timeout){
$scope.premiumVal=“75”;
elem=document.getElementById(“我的隐藏”);
console.log(“scope”,$scope.premiumVal);//scope 75
//log(“attr.value”,elem.attributes.value);
log(“elem.value”,elem.value);//elem.value{{{premiumVal}}
$scope.$evalAsync(函数(){
//log($evalAsync attr),elem.attributes.value);
log(“$evalAsync elem”,elem.value);//$evalAsync elem{{{premiumVal}
})
$timeout(函数(){
//log(“$timeout attr”,elem.attributes.value);
console.log(“$timeout elem”,elem.value);//$timeout elem 75
})
})
{{premiumVal}}
ng value=“premiumVal”,这对我不起作用,但当我给ng value=“75”它的工作方式时,范围属性隐藏问题只在双向绑定时出现。ng值
属性是单向绑定。
app.controller("ctrl",function($scope,$timeout) {
$scope.premiumVal = "75";
elem = document.getElementById("my-hidden");
console.log("scope",$scope.premiumVal);
console.log("attr.value",elem.attributes.value);
console.log("elem.value",elem.value);
$scope.$evalAsync(function() {
//THESE ARE EXECUTED ON NEXT AngularJS framework tick
console.log("$evalAsync attr",elem.attributes.value);
console.log("$evalAsync elem",elem.value);
})
$timeout(function() {
//THESE ARE EXECUTED ON NEXT browser tick
console.log("$timeout attr",elem.attributes.value);
console.log("$timeout elem",elem.value);
})
})