use*_*751 3 html javascript function angularjs angularjs-controller
嗨,我有一个按钮,可以触发两个功能.有没有办法让updateDetails只在changeColor完成后运行?updateDetails当前正在使用旧颜色而不是更改的颜色来提取旧配置.
ng-click="changeColor(color.code); updateDetails()"
Run Code Online (Sandbox Code Playgroud)
这是观点:
<div ng-controller="ColorsCtrl">
<div ng-controller="HeaderCtrl">
<div byo-header>
</div>
<div ng-repeat="color in colors" class="row">
<div class="small-12 columns">
<div ng-controller="ButtonsController">
<div class="button-group">
{{ isSelected(color.code) }}
<button ng-click="changeColor(color.code); updateDetails()" type="radio" class="button" ng-model="selectedColor" btn-radio="color.code">{{color.name}}</button>
</div>
</div>
</div>
</div>
<br/>
<br/>
<div class="row">
<div class="small-4 small-offset-4 columns">
<!-- Proceed to packages if available -->
<a ng-if="hasPackage" href="#/packages/{{modelCode}}" class="button">Packages</a>
<!-- Proceed to options if packages not available -->
<a ng-if="!hasPackage" href="#/options/{{modelCode}}" class="button">Options</a>
</div>
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
这是ColorsCtrl中的changeColor():
$scope.changeColor = function(newColorCode){
//swap previous selected color with new
configuratorService.addOption($scope.modelCode, newColorCode, function(configuration){
$scope.configuration = configuration;
});
}
}
Run Code Online (Sandbox Code Playgroud)
这是HeaderCtrl中的updateDetails
$scope.updateDetails = function(){
$scope.summaryDetails = getSummaryDetails();
}
Run Code Online (Sandbox Code Playgroud)
因为changeColor
是异步操作 - 不,你不能等待内联.您必须在回调中调用该函数:
$scope.changeColor = function(newColorCode){
//swap previous selected color with new
configuratorService.addOption($scope.modelCode, newColorCode, function(configuration){
$scope.configuration = configuration;
$scope.updateDetails();
});
}
Run Code Online (Sandbox Code Playgroud)
如果在其他地方使用此函数并且您并不总是想要调用update,则传递一个标志参数:
$scope.changeColor = function(newColorCode, shouldUpdate){
//swap previous selected color with new
configuratorService.addOption($scope.modelCode, newColorCode, function(configuration){
$scope.configuration = configuration;
if (shouldUpdate) $scope.updateDetails();
});
}
ng-click="changeColor(color.code, true);"
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1284 次 |
最近记录: |