Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/473.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 更改ng选项列表时ng init不工作_Javascript_Html_Angularjs_Initialization - Fatal编程技术网

Javascript 更改ng选项列表时ng init不工作

Javascript 更改ng选项列表时ng init不工作,javascript,html,angularjs,initialization,Javascript,Html,Angularjs,Initialization,下面的“选择元素”将加载并选择加载控件时的第一个选项。 我根据另一个下拉列表更改位置下限列表。 但是ng init没有选择第一项 <select ng-init="col.positionselected = col.positionAllowedList[0].value" ng-options="pos.value as pos.text for pos in col.positionAllowedList" ng-model="col.positionselected">

下面的“选择元素”将加载并选择加载控件时的第一个选项。 我根据另一个下拉列表更改位置下限列表。 但是ng init没有选择第一项

<select ng-init="col.positionselected = col.positionAllowedList[0].value" ng-options="pos.value as pos.text for pos in col.positionAllowedList" ng-model="col.positionselected">
                                                </select>

$scope.ChangeBookingIso = function (col) {
                $.each(col.bookingIsoList, function (i, item) {                   
                        ....someLogic to change it is exactly the same structure the json list as before at the first time loaded.....
                        col.positionAllowedList = positionAllowedList;

                })

            }

$scope.changebookingso=函数(列){
$.each(col.bookingIsoList,function(i,item){
..要更改的someLogic与第一次加载json列表时的结构完全相同。。。。。
col.PositionalLowdList=位置LowdList;
})
}

您使用的指令错误
ng init
从未设计为基于视图上的任意(尽管可能被误用)表达式进行初始化。文件本身说:

ngInit的唯一适当用途是对ngRepeat的特殊属性进行别名处理,如下面的演示所示。除此之外,应该使用控制器而不是ngInit来初始化作用域上的值

因此,ng repeat的一般用法是对其特殊属性(如
$index
$first
等)进行别名化,因此,例如,当您在子ng repeat中使用嵌套的
ng repeat
时,您可以通过
ng init
设置的别名访问父ng repeat的
$index
,而无需使用
$parent.$index
$parent.$parent…$index

这也只是一次初始化,如果你看一下,它是非常简单和直接的

var ngInitDirective = ngDirective({
  priority: 450,
  compile: function() {
    return {
      pre: function(scope, element, attrs) {
        scope.$eval(attrs.ngInit);
      }
    };
  }
});
如果您注意到没有创建
监视
,以便在每个摘要周期中重新计算表达式。因此,毫不奇怪,它并没有按照您的预期工作


因此,只需从
select
中删除
ng init
,而是在控制器本身内设置属性
col.positionselected

您不应该使用(按照链接并读取第一个块)来进行此操作。ng init表达式不会在每个摘要周期中进行求值。使用控制器设置
col.positionselected
任何特定原因,因为我理想情况下希望ng init在ng选项列表有效的情况下工作,分配之间的延迟是否会导致ng init出现问题?实际上,没有特定原因说明为什么它会以这种方式工作,因为这不是它的设计目的。顾名思义,ng init是用来定义初始值hanks。。。。你的回答让我调试得更深入了一点,我使用ng init的原因是它不适合设置ng模型,直到现在才意识到我在应该分配“2”的地方分配了2。。。duh@RameezAhmedSayad它会在第一时间起作用,但不会在其他事件发生时起作用。