如何\我在哪里初始化一个值,以便执行所有侦听器?

时间:2014-08-02 12:43:51

标签: javascript angularjs

我有一个AngularJS视图,其中包含以下内容:

<select ng-change="shop.updateSizes()" ng-model="shop.color" ng-options="color.name for color in COLORS"></select>

更改方法在我的控制器中看起来像这样:

shop.updateSizes = function () {
    this.sizes = this.color.sizes;
    this.updateSomethingElse(); //*

    return this;
}

如何初始化颜色并让侦听器(updateSizes)执行?

此外,奖金问题:标有*被认为是良好做法的行?或者,我可以在控制器对象中放置一个侦听器以获取大小,并让它执行updateSomethingElse()。

2 个答案:

答案 0 :(得分:0)

使用

在控制器中设置颜色的初始值
$scope.color = 'some-color';

Angular应自动处理你的ng-change指令并在你的控制器中触发该方法。

如果您认为自己需要添加事件和列表,那么您应该阅读一些Angular指南,它基本上可以为您完成所有事情。

答案 1 :(得分:0)

根据文档ng-change,仅触发用户输入。如果在代码中更改模型,则不会触发。如ng-change文档中所述

  

不会评估:

     

如果从$ parsers转换管道返回的值有

     如果输入因模型

而继续无效,则

不会更改      如果以编程方式更改模型而不是通过更改输入值

将保持为null

无论您在何处初始化color,都需要手动调用此方法。

$scope.shop.color=$scope.COLORS[0];  //selects first value
$scope.shop.updateSizes()