Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.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 init覆盖选择选项中的模型(添加了plunker)_Javascript_Angularjs_Angularjs Scope - Fatal编程技术网

Javascript ng init覆盖选择选项中的模型(添加了plunker)

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 init属性初始化为“红色”。我想在页面加载时显示默认颜色“红色”

 <select ng-model="mycolor" ng-init="mycolor = 'red'">
      <option>red</option>
      <option>green</option>
    </select>

如何解决这个问题?简言之,我想要实现的是,我想在页面加载时在选择框中显示红色默认值,如果mycolor在后端发生任何更改,它应该被覆盖为新颜色。在我的例子中,它是绿色的。

问题是ngInit是一个指令,角度寿命基本上是

  • 编撰
  • 控制器
  • 预链接
  • 后链接
  • 因此,您不能根据指令“重写”控制器中的某些内容(除非它专门使用compile)


    将观察者置于任何需要更改的位置似乎更符合逻辑,观察者回调更改
    'mycolor'

    问题在于ngInit是一个指令,角度寿命基本上是

  • 编撰
  • 控制器
  • 预链接
  • 后链接
  • 因此,您不能根据指令“重写”控制器中的某些内容(除非它专门使用compile)

    将观察者放在任何需要更改的地方,并且观察者回调更改
    'mycolor'
    您可以执行的更改,似乎更符合逻辑

    因此,如果有值,
    mycolor
    模型将设置为自身,否则默认为
    “红色”

    看。例如,我有5秒钟的超时时间将颜色更改为蓝色以模拟后端更改。

    您可以这样做

    因此,如果有值,
    mycolor
    模型将设置为自身,否则默认为
    “红色”


    看。例如,我有5秒钟的超时时间将颜色更改为蓝色,以模拟后端更改。

    那么,在页面加载上设置默认值而不是ng init并能够实现我的目标的替代方法是什么。控制器是您的“页面加载”,如前所述,您需要观察者,请参阅$scope.$watch然后,在页面加载而不是ng init上设置默认值并能够实现我的目标的另一种方法是什么。控制器是您的“页面加载”,正如前面所说,您需要观察者,请参阅$scope.$watch,来自of
    ngInit
    指令:“ngInit只有一些适当的用途,例如为ngRepeat的特殊属性别名。”。您应该使用控制器而不是ngInit来初始化作用域上的值。“在
    ng options
    中使用
    ng init
    是一种非常糟糕的做法。@developer033是肯定的,我同意我们可以在控制器中这样做。但在这种情况下,由于选项在模板中硬编码,而不是在控制器中定义为数组,我认为最好将默认值保持在模板中定义选项值的位置附近。从of
    ngInit
    指令:“ngInit只有一些适当的用途,例如为ngRepeat的特殊属性别名。”。您应该使用控制器而不是ngInit来初始化作用域上的值。“在
    ng options
    中使用
    ng init
    是一种非常糟糕的做法。@developer033是肯定的,我同意我们可以在控制器中这样做。但在本例中,由于选项在模板中硬编码,而不是在控制器中定义为数组,因此我认为最好将默认值保持在模板中定义选项值的位置附近。
    app.controller('MainCtrl', function($scope) {
      $scope.mycolor = 'green';
    });