簡體   English   中英

將對象屬性鏈接到值的最佳方法是什么?

[英]What's the best way to keep an object property linked to a value?

我的問題與我重構的指令有關:

HTML

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

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

<!-- Both directives use '=' bindings... -->

JS

$scope.sliderValue=0;
$scope.maxPrice = 1000;

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

//later
$scope.maxPrice = 2000;

使用舊版本,我可以更新$scope.maxPrice ,它將自動更新指令中ceil的作用域值。 我想在新版本中實現相同的目的。

我想到的第一個主意是在$scope.maxPrice上使用$watch ,但是我讀過很多人解釋說,使用$watch是不好的做法。

然后,我可以在每次更新$scope.sliderOptions.ceil手動更新$scope.maxPrice但這很煩人。

注意: $scope.maxPrice是在應用程序的多個位置中使用的業務邏輯值,而$scope.sliderOptions僅用於滑塊指令。

經過思考和討論,我想您僅限於將maxprice在一個簡單的對象中。 這樣做的原因是因為JavaScript無法通過引用傳遞數字。 有關主題的更多信息: 是否有類似JavaScript中按值傳遞和引用傳遞的東西?

擬議的解決方案

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

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM