2014-10-20 25 views
0

比方說,我有一個對象使用加密值的數組:AngularJS - 顯示解密值投入使用ngModel

// the values are encrypted 
$scope.fruits = [ 
    [0]: {'name':'as987s=', 'size':'Hjh6Gj0'}, 
    [1]: {'name':'3fss87s=', 'size':'kooi9huy8g'}, 
    [2]: {'name':'asdd21s=', 'size':'juHg7g'}, 
]; 

// returns an encrypted data 
$scope.decryptData = function(param) { 
    return decrypt(param); 
}; 

我怎樣才能在一個文本框顯示解密的價值觀?

我想在我看來是這樣的:

<div ng-repeat="fruit in fruits"> 
    {{ decryptData(fruit.name) }} 
    <input type="text" ng-model="fruit.size" /> 
</div> 

它的工作原理右側的標籤上,但我該怎麼做同樣的事情在文本輸入?

+0

這樣當用戶輸入 「蘋果」,你可以把它匹配'水果[0]'?然後你必須添加一個'encrypt()'函數來加密比較前的結果,或者解密所有的'frunts'並將其與用戶輸入進行匹配。第一個有安全問題,第二個沒有高性能。 – leesei 2014-10-20 05:43:34

+0

@leesei我在我的原始代碼中有一個encrypt()函數。我嘗試使用解密/加密所有功能,但每次發生更改時都必須使用該功能,並且會導致應用程序緩慢 – 2014-10-20 06:10:27

回答

2

這裏是一個鏈接到fiddle

創建一個指示可以說decryptInfo,並用它輸入。

myApp.directive('decryptInfo', ['decryptService', function(decryptSvc){ 
    return { 
    require: 'ngModel', 
    link: function(scope, element, attrs, ngModelController) { 
     ngModelController.$formatters.push(function(data) { 
     return decryptSvc.decrypt(data); //decrypted 
     }); 
     } 
    }; 
}]); 

HTML:

<div ng-repeat="fruit in fruits"> 
    {{ decryptData(fruit.name) }} 
    <input type="text" ng-model="fruit.size" decrypt-info /> 
</div> 
+0

它的工作原理和它回答我的問題,但它不適合我真正的問題,只要我編輯文本框其模型值也變成解密形式。我需要保留模型中的值加密 – 2014-10-20 07:37:16

+0

這裏是更新的鏈接[fiddle](http://jsfiddle.net/paila/gcxq5Ly6/3/) 它顯示了原始值和解密值。嘗試交換尺寸值,您會看到在禁用文本框中顯示的解密值。 – 2014-10-20 08:41:43

+0

如果它回答你的問題,你可以將它標記爲答案。謝謝。 – 2014-10-20 22:38:02