亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在AngularJS中進行雙向過濾?

如何在AngularJS中進行雙向過濾?

呼喚遠方 2019-12-02 08:04:49
AngularJS可以做的有趣的事情之一是將過濾器應用于特定的數據綁定表達式,這是一種方便的方法,例如,應用區域性特定的貨幣或模型屬性的日期格式。在范圍上具有計算屬性也很好。問題在于這些功能都不適用于雙向數據綁定方案-從作用域到視圖僅單向數據綁定。在一個本來不錯的圖書館中,這似乎是一個明顯的遺漏-還是我錯過了什么?在KnockoutJS中,我可以創建一個讀/寫計算屬性,該屬性允許我指定一對函數,一個被調用以獲取該屬性的值,而一個被設置為屬性時被調用。例如,這使我可以實現文化意識的輸入-允許用戶鍵入“ $ 1.24”,然后將其解析為ViewModel的float,并在輸入中反映出ViewModel的更改。我可以找到與此最相似的東西是使用。$scope.$watch(propertyName, functionOrNGExpression);這允許我在$scope更改屬性時調用一個函數。但這不能解決例如文化意識的輸入問題。當我嘗試$watched在$watch方法本身中修改屬性時,請注意問題:$scope.$watch("property", function (newValue, oldValue) {    $scope.outputMessage = "oldValue: " + oldValue + " newValue: " + newValue;    $scope.property = Globalize.parseFloat(newValue);});(http://jsfiddle.net/gyZH8/2/)用戶開始輸入時,input元素會非?;靵y。我通過將屬性拆分為兩個屬性來改進它,一個用于未解析的值,另一個用于已解析的值:$scope.visibleProperty= 0.0;$scope.hiddenProperty = 0.0;$scope.$watch("visibleProperty", function (newValue, oldValue) {    $scope.outputMessage = "oldValue: " + oldValue + " newValue: " + newValue;    $scope.hiddenProperty = Globalize.parseFloat(newValue);});(http://jsfiddle.net/XkPNv/1/)這是對第一個版本的改進,但是更加冗長,請注意,parsedValue范圍更改的屬性仍然存在問題(在第二個輸入中鍵入內容,parsedValue直接更改。請注意,最上面的輸入沒有更新)。這可能是由于控制器操作或從數據服務加載數據而發生的。有沒有更簡單的方法可以使用AngularJS來實現此方案?我在文檔中缺少某些功能嗎?
查看完整描述

3 回答

?
肥皂起泡泡

TA貢獻1829條經驗 獲得超6個贊

您是否有任何理由在鏈接函數中使用“ ngModel”作為第四個參數的名稱?難道這不只是該指令的通用控制器,而該指令基本上與ngModel屬性無關?(在這里仍然學習角度,所以我可能完全錯了。)

查看完整回答
反對 回復 2019-12-03
  • 3 回答
  • 0 關注
  • 575 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號