我有这样简单的离子模板:
<ion-item class="range range-calm">Shift {{shiftval}}:
<input ng-change="shiftChange()" type="range" ng-model="shiftval" min="1" max="25">
</ion-item>
<span class="input-label">In</span>
<input type="text" ng-model="decripted" id="dec" ng-change="change()" />
</label>
<span class="input-label">Out</span>
<input type="text" ng-model="encripted" />
</label>
使用这样的控制器逻辑:
.controller('mylog', function($scope) {
var shiftval = ( typeof shiftval === 'undefined' ) ? 13 : shiftval;
$scope.change = function(){
this.decripted = this.decripted.toUpperCase();
this.encripted = cezarCipher(this.decripted, shiftval);
};
$scope.shiftChange = function(){
shiftval = this.shiftval;
$scope.change();
};
})
在我试图调用$scope.change();
的最后一行,只是为了触发事件并再次重新渲染文本,我得到这样的错误:
Cannot read property 'toUpperCase' of undefined
如果有人知道如何克服这个问题,我将非常感谢!
答案 0 :(得分:1)
尝试给$scope.decripted
一个初始值,它可能是第一次在控制器中触发$scope.change
函数时未设置的。
由于decripted未定义,因此尝试在其上调用函数toUpperCase()
将触发错误,因为它不是字符串。
答案 1 :(得分:0)
您应该在ng-model
function
传递
<input type="text" ng-model="decripted" id="dec" ng-change="change(decripted)" />
和你的controller
一样
$scope.change = function(decripted){
var decripted = decripted.toUpperCase();
encripted = cezarCipher(decripted, shiftval);
};