![](/img/trans.png)
[英]AngularJS : ng-model binding not updating when changed with jQuery
[英]AngularJS binding not updating model
我最近開始探索AngularJS。 我看到了一些類似的問題,但是我很確定這里沒有任何示波器問題。 (或者我對范圍的理解不清楚。)
JS代碼:
var app = angular.module("myApp", []);
app.controller("myController", function($scope){
$scope.b=50000
$scope.apr=10
$scope.hc=$scope.b/$scope.apr
...
})
HTML:
<div ng-app="myApp" ng-controller="myController">
<span class="inp-heading">b:</span>
<input ng-model="b" type="number" step="1000" min="0" />
<input ng-model="apr" type="number" step="1" min="0" />
{{b}} <br /> <!-- this updates on input value change -->
{{hc}} <br /> <!-- this does NOT update on input value change -->
{{b/apr}} <br /> <!-- this updates on input value change -->
如注釋中所述(在上面的HTML代碼中),$ scope.hc不變。 這實際上並不是唯一的問題,在將數組值綁定到輸入框時遇到了類似的麻煩。
任何幫助,將不勝感激。
您的hc
不會自動更新,如果需要的話,它應該是一個類似
var app = angular.module("myApp", []);
app.controller("myController", function($scope){
$scope.b=50000
$scope.apr=10
$scope.hc= function() { return $scope.b/$scope.apr; };
...
})
然后在你的局部應該是(而不是hc
,它將是hc()
)
<div ng-app="myApp" ng-controller="myController">
<span class="inp-heading">b:</span>
<input ng-model="b" type="number" step="1000" min="0" />
<input ng-model="apr" type="number" step="1" min="0" />
{{b}} <br />
{{hc()}} <br />
{{b/apr}} <br />
由於僅更改某些模型時就不會重新調用控制器功能,因此不會重新計算$scope.hc
的值。 在渲染之前,您需要手動更新它或以某種方式獲取重新計算的值。 幾種方法。
使用ngChange指令(onchange事件類型)更新$scope.hc
值:
var app = angular.module("myApp", []);
app.controller("myController", function($scope){
$scope.b = 50000
$scope.apr = 10
$scope.hc = $scope.b/$scope.apr
$scope.onChange = function () {
$scope.hc = $scope.b/$scope.apr
}
})
HTML
<input ng-model="b" ng-change="onChange()" type="number" step="1000" min="0" />
<input ng-model="apr" ng-change="onChange()" type="number" step="1" min="0" />
在將 hc
定義為$ scope對象的屬性時,可以在這里使用舊的ES5屬性getter:
var app = angular.module("myApp", []);
app.controller("myController", function($scope){
$scope.b = 50000
$scope.apr = 10
Object.defineProperty($scope, 'hc', {
get: function () {
return $scope.b/$scope.apr
}
})
})
在這種情況下,HTML不會更改。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.