Javascript 更改ng选项列表时ng init不工作
下面的“选择元素”将加载并选择加载控件时的第一个选项。 我根据另一个下拉列表更改位置下限列表。 但是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">
<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它会在第一时间起作用,但不会在其他事件发生时起作用。