Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将范围值传递给a<;输入>;元素'value'属性 我想将范围值传递给隐藏的输入类型,但无法传递_Javascript_Html_Angularjs - Fatal编程技术网

Javascript 如何将范围值传递给a<;输入>;元素'value'属性 我想将范围值传递给隐藏的输入类型,但无法传递

Javascript 如何将范围值传递给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

我有一个下拉列表,我想将scope变量传递给输入类型,但它不起作用。代替PremiumVal,它应该是75

html


删除
{{}
并使用
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);
  })
})