我有一个指令,我在读取值作为属性并将它们存储在范围内。我的标记如下:
<my-directive
ng-model="myCtrl.widgets"
widget-amount="myCtrl.widgets"
sprocket-amount="myCtrl.sprockets">
</my-directive>
我的指令定义如下:
return {
scope: {
widgetAmount : '=',
sprocketAmount : '=',
....
然后该指令允许用户修改小部件数量。
我遇到的问题是,在我的指令代码中,我想用小部件数量的ORIGINAL值进行一些计算,但我似乎无法保存该值。我试过angular.copy
无济于事。它似乎只是给我一个副本,它也随着指令中的值而变化。如何在保留双向绑定的同时获取此变量的原始值?
答案 0 :(得分:0)
我希望我正确地解释这一点。
在指令中保留双向有界值的原始值。
您可以使用指令的控制器来保留该值。
function myDirective() {
return {
scope: {
widgetAmount: '=',
sprocketAmount: '='
},
...
controller: function($scope) {
// Retain the original value
$scope.original = $scope.widgetAmount;
// Modify the widgetAmount
$scope.widgetAmount *= 2;
}
};
};
<div ng-app="app">
<div ng-controller="ctrl">
<my-directive
ng-model="myCtrl.widgets"
widget-amount="myCtrl.widgets"
sprocket-amount="myCtrl.sprockets">
</my-directive>
</div>
</div>
angular.module('app', [])
.directive('myDirective', myDirective);
function ctrl($scope) {
$scope.myCtrl = {
widgets : 5,
sprockets : 10
}
}
function myDirective() {
return {
restrict: 'E',
scope: {
widgetAmount: '=',
sprocketAmount: '='
},
template: '<pre>{{ original }} {{ widgetAmount }} {{ sprocketAmount }}</pre>',
controller: function($scope) {
$scope.original = $scope.widgetAmount;
$scope.widgetAmount *= 2;
}
};
};