AngularJS - 来自函数的NgOptions返回未定义的值

时间:2017-06-12 10:43:12

标签: javascript angularjs undefined angularjs-ng-options

我有一个应用程序必须在select内显示一些选项,具体取决于之前的选项。为了达到这个目的,我将逻辑放在控制器函数中显示这些选项,如下所示:

vm.getScopeValues = function(tp){
    var vals = [];

    vals.push({n: 'Opt1', v: 'opt1'});

    if(!tp || tp != 'somevalue'){
        vals.push({n: 'Opt2', v: 'opt2'});
    }

    return vals;
};

问题在于,有时候,我得到一个undefined作为选择选项的值。在下面的jsFiddle中,您可以看到更简单的方法,但结果相同:

https://jsfiddle.net/nr9ffrkk/

如你所见:

  • 如果我写track by v,我会得到未定义的
  • 如果我写track by o.v,那么值是正确的,但ng-model无法正确匹配
  • 如果我在没有o.v as o.n...的情况下写track by,我会收到错误($ digest cycles)
  • 当所有内容都正确匹配(我以某种方式实现但不记得如何),如果我添加一个新的动态“字段”(点击“添加新字段”),那么它们再次出现undefined

我已经console.log看了函数的返回值,并且它被正确调用并返回正确的值(没有undefined)。

我需要能够在fields数组上创建dinamycally新条目(当然,type的初始值)并且select为选项获取正确的值。

已更新

正如您所看到的,使用值创建控制器变量(不是函数)也不起作用,带来同样的问题:

https://jsfiddle.net/dgy5ryvh/

谢谢!

0 个答案:

没有答案