Javascript ng init覆盖选择选项中的模型(添加了plunker)
在上面的示例中,我正在硬编码select选项,并通过ng init属性初始化为“红色”。我想在页面加载时显示默认颜色“红色”Javascript ng init覆盖选择选项中的模型(添加了plunker),javascript,angularjs,angularjs-scope,Javascript,Angularjs,Angularjs Scope,在上面的示例中,我正在硬编码select选项,并通过ng init属性初始化为“红色”。我想在页面加载时显示默认颜色“红色” <select ng-model="mycolor" ng-init="mycolor = 'red'"> <option>red</option> <option>green</option> </select> 如何解决这个问题?简言之,我想要实现的是,我想在页
<select ng-model="mycolor" ng-init="mycolor = 'red'">
<option>red</option>
<option>green</option>
</select>
如何解决这个问题?简言之,我想要实现的是,我想在页面加载时在选择框中显示红色默认值,如果mycolor在后端发生任何更改,它应该被覆盖为新颜色。在我的例子中,它是绿色的。问题是ngInit是一个指令,角度寿命基本上是
将观察者置于任何需要更改的位置似乎更符合逻辑,观察者回调更改
'mycolor'
问题在于ngInit是一个指令,角度寿命基本上是
'mycolor'
您可以执行的更改,似乎更符合逻辑
因此,如果有值,mycolor
模型将设置为自身,否则默认为“红色”
看。例如,我有5秒钟的超时时间将颜色更改为蓝色以模拟后端更改。您可以这样做
因此,如果有值,mycolor
模型将设置为自身,否则默认为“红色”
看。例如,我有5秒钟的超时时间将颜色更改为蓝色,以模拟后端更改。那么,在页面加载上设置默认值而不是ng init并能够实现我的目标的替代方法是什么。控制器是您的“页面加载”,如前所述,您需要观察者,请参阅$scope.$watch然后,在页面加载而不是ng init上设置默认值并能够实现我的目标的另一种方法是什么。控制器是您的“页面加载”,正如前面所说,您需要观察者,请参阅$scope.$watch,来自of
ngInit
指令:“ngInit只有一些适当的用途,例如为ngRepeat的特殊属性别名。”。您应该使用控制器而不是ngInit来初始化作用域上的值。“在ng options
中使用ng init
是一种非常糟糕的做法。@developer033是肯定的,我同意我们可以在控制器中这样做。但在这种情况下,由于选项在模板中硬编码,而不是在控制器中定义为数组,我认为最好将默认值保持在模板中定义选项值的位置附近。从ofngInit
指令:“ngInit只有一些适当的用途,例如为ngRepeat的特殊属性别名。”。您应该使用控制器而不是ngInit来初始化作用域上的值。“在ng options
中使用ng init
是一种非常糟糕的做法。@developer033是肯定的,我同意我们可以在控制器中这样做。但在本例中,由于选项在模板中硬编码,而不是在控制器中定义为数组,因此我认为最好将默认值保持在模板中定义选项值的位置附近。
app.controller('MainCtrl', function($scope) {
$scope.mycolor = 'green';
});