在 JavaScript 中
$scope.testNames = ['ABC', 'DEF', 'GHI'];
$scope.selTestName = $scope.testNames[0];
$scope.test = function(){
$log.debug('selTestName=' + $scope.selTestName);
}
在jsp中
<td colspan="3" class="input-medium">
<select class="span2" ng-model="selTestName" style="font-family: verdana;"
ng-options="testName for testName in testNames">
</select></td>
{{selTestName}}
<td>
<button type="button" class="btn btn-small btn-info" ng-click="test()">Test selTestName</button>
</td>
当我选择的值更改时,插值 {{selTestName}} 也会相应更改,但是无论我选择什么并按“测试”按钮,在 javascript 端,$scope.selTestName 保持不变,为什么?
如何使 $scope.setTestName 根据我选择的值进行更改?我已经设置了 ng-Model = "selTestName".
我的angularjs版本是1.2.26
“如果你使用 ng-model,则必须在其中有一个点。”做你的 model 指向一个 object.property 然后你就可以开始了。”
最后我在这里找到了答案: Ng-model 不更新控制器值
问题就在这里
ng-model="selTestName"
ng-model需要使用object.property。
像下面这样:
$scope.testNames = ['ABC', 'DEF', 'GHI'];
$scope.selTestName = {tableName:$scope.testNames[0]};
jsp/html:
<select class="span2" ng-model="selTestName.tableName" style="font-family: verdana;"
ng-options="testName for testName in testNames">
</select></td>
这成功解决了我的问题。
无论如何,现在还有另一个问题,因为我发现即使 ng-model 不使用 dot.notation,以下内容仍然有效。 https://jsfiddle.net/ejghzyo3/7/
无论如何,这已经是另一个新问题了,也许我会就此创建一个新问题。