当我的代码按预期加载所有东西时,将显示选择框,所有thge选项都来自我要传递给指令的state.TRVs。并且选择了myConfig.myTime的值,但是当我更改值时,选择框变为空白,并且myConfig.myTime是undefined。我正在使用AngularJS v1.2.28。

我有一个指令,这是HTML中的指令元素:

<my-dir my-config="conf" time-range-values="state.TRVs"></my-dir>


指令:

angular.
    module("myMod").
    directive("myDir", [
function () {
    "use strict";

    return {
        restrict: "E",
        scope: {
            myConfig: "=",
            timeRangeValues: "="
        },
        templateUrl: "my-temp"
   };
}]);


my-temp.html:

<select ng-model="myConfig.myTime"
ng-options="v as v for (k, v) in timeRangeValues track by v">
</select>

最佳答案

删除track by v表达式。从AngularJS docs on ngOptions中:


  不要在同一表达式中使用“选择为”和“跟踪”。它们并非旨在一起工作。


就在今天的代码中,我遇到了类似的问题,结果发现我确实尝试在一个表达式中同时使用这两个东西。删除它有帮助。

关于javascript - ng-options无法正确更新ng-model,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31145332/

10-13 01:47