我有一个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()。
答案 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()