Javascript 什么';保持对象属性与值链接的最佳方法是什么?

Javascript 什么';保持对象属性与值链接的最佳方法是什么?,javascript,angularjs,Javascript,Angularjs,我的问题与我重构的指令有关: HTML <!-- Before --> <slider value="sliderValue" floor="0" ceil="maxPrice"></slider> <!-- New version --> <slider value="sliderValue" options="sliderOptions"></slider> <!-- Both directives use '

我的问题与我重构的指令有关:

HTML

<!-- Before -->
<slider value="sliderValue" floor="0" ceil="maxPrice"></slider>

<!-- New version -->
<slider value="sliderValue" options="sliderOptions"></slider>

<!-- Both directives use '=' bindings... -->
对于旧版本,我可以更新
$scope.maxPrice
,它会自动更新指令中
ceil
的范围值。我希望新版本也能达到同样的效果

我想到的第一个想法是在
$scope.maxPrice
上使用
$watch
,但我读过很多人解释说使用
$watch
是一种不好的做法

然后,每次更新
$scope.maxPrice
时,我都可以手动更新
$scope.slideoptions.ceil
,但这很烦人


N.B.
$scope.maxPrice
是应用程序中多个位置使用的业务逻辑值,而
$scope.sliderOptions
仅用于slider指令。

经过思考和讨论后,我想您仅限于将
maxPrice
包装在一个简单的对象中。这样做的原因是JavaScript不能通过引用传递数字。有关该主题的更多信息:

提议的解决办法


啊,我明白了!我可以使用服务给你一个答案。这可能需要重新编写一些代码,但我相信这对应用程序的结构来说是最好的。感兴趣吗?我不确定您想做什么,但指令无法访问服务,因为它可以在任何应用程序中重用。我理解数字不能通过引用传递。但是,我不喜欢这个解决方案,因为我有几十个选项可以传递给滑块,我不想强迫用户执行
{floor:{value:0},ceil:{value:$scope.maxPrice},等等..
。另外,由于
$scope.maxPrice
属于业务逻辑,我不喜欢修改它,因为滑块需要它具有强制结构。
$scope.sliderValue=0;
$scope.maxPrice = 1000;

$scope.sliderOptions = {
    floor: 0,
    ceil: $scope.maxPrice
};

//later
$scope.maxPrice = 2000;
$scope.sliderValue=0;
$scope.maxPrice = {value: 1000};

$scope.sliderOptions = {
    floor: 0,
    ceil: $scope.maxPrice
};

//later
$scope.maxPrice.value = 2000;