AngularJs,选择控件,无法使用ng-Model将所选值传递给javascript

问题描述 投票:0回答:1

在 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

angularjs
1个回答
0
投票

“如果你使用 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/

无论如何,这已经是另一个新问题了,也许我会就此创建一个新问题。

© www.soinside.com 2019 - 2024. All rights reserved.