Javascript 角度js中的作用域访问
使用angularjs和ionic访问变量时遇到问题。我有一个页面,其中列出了大量项目:Javascript 角度js中的作用域访问,javascript,angularjs,ionic-framework,Javascript,Angularjs,Ionic Framework,使用angularjs和ionic访问变量时遇到问题。我有一个页面,其中列出了大量项目: <ion-item ng-repeat="item in items" item="item" href="" style="max-height:70px; padding: 0px 0px 0px 0px;" > <di
<ion-item ng-repeat="item in items"
item="item"
href=""
style="max-height:70px; padding: 0px 0px 0px 0px;"
>
<div class="containerText" style="position:absolute; float:left; margin-left:60px">
<div class="" style="font-size:11px">
{{item.datea}}
</div>
<div class="" style="margin-top:4px; font-weight:bold; text-align:right">
{{item.value}}
</div>
</div>
(...)
(……)
正如您所看到的,它说它是一个已经加载到字段中的数值,但是我可以毫无问题地添加额外的数字或删除输入字符串的字符,但是如果我想加载另一个值(甚至是之前加载的相同值),那么当我得到这个输出时,范围似乎会变得混乱
controllers.js:185 Load values
controllers.js:77 ERASING!
controllers.js:212 value in this.searchText 14458.55
controllers.js:213 value in scope.searchText 15429.477
controllers.js:214 false
我尝试同时修改this.searchText和scope.searchText,但没有结果。我能做些什么来解决这个问题 您能否完全避免使用this.searchText而只使用$scope.searchText?此外,将变量命名为$templaval是一种不好的做法。尽量避免在变量名前加$。jquery和angular非常喜欢这个前缀,这会让您感到困惑,并可能导致基础架构代码崩溃(例如与jquery和/或angularjs的内部实现发生冲突)。最后,addNumber看起来像是一个需要一个数字的函数,而$tempVal可能包含多个数字。我不确定addNumber在这个use caseHi Uri中是否总是正常工作,实际上将this.searchText替换为$scope.searchText解决了这个问题。非常感谢你!即使你说的是真的,addNumber似乎也很有效。您是否建议为加载保存的号码创建一个附加功能?我现在可以理解为什么它可以工作了,但一开始让人困惑。为了清楚起见,我建议稍微修改一下代码。我认为不需要另一个功能。您可以这样做:“$scope.searchText=valueToAdd.toString()”是否可以避免完全使用此.searchText而只使用$scope.searchText?此外,将变量命名为$templaval是一种不好的做法。尽量避免在变量名前加$。jquery和angular非常喜欢这个前缀,这会让您感到困惑,并可能导致基础架构代码崩溃(例如与jquery和/或angularjs的内部实现发生冲突)。最后,addNumber看起来像是一个需要一个数字的函数,而$tempVal可能包含多个数字。我不确定addNumber在这个use caseHi Uri中是否总是正常工作,实际上将this.searchText替换为$scope.searchText解决了这个问题。非常感谢你!即使你说的是真的,addNumber似乎也很有效。您是否建议为加载保存的号码创建一个附加功能?我现在可以理解为什么它可以工作了,但一开始让人困惑。为了清楚起见,我建议稍微修改一下代码。我认为不需要另一个功能。您可以执行以下操作:“$scope.searchText=valueToAdd.toString()
/****************** KEYBOARD FUNCTIONS ************************/
//Adds a number in the field text above the keyboard
$scope.addNumber = function(num) {
//limiting the amount of numbers in the display
if (this.searchText.length < 20)
if (this.searchText == "0")
if (num != '.')
this.searchText=num;
else
this.searchText = (this.searchText) + num;
else
if (num!='.')
this.searchText = (this.searchText) + num;
else if (this.searchText.indexOf('.') == -1)
this.searchText = (this.searchText) + num;
}
//Used to delete the number in the screen and set it to 0
//AKA RESET
$scope.deleteNumbers = function(){
this.searchText= "0";
console.log("ERASING!");
}
//Used to delete the last entered digit/symbol
$scope.deleteLast = function(){
this.searchText = this.searchText.slice(0, -1);
if (this.searchText.length==0)
{
this.searchText = "0";
}
}
//used to load the values of an element of the list to the display
$scope.loadItem = function(valueToAdd){
console.log("Load values ");
$scope.deleteNumbers();
$tempVal = valueToAdd.toString();
$scope.addNumber($tempVal);
console.log("value in this.searchText " + this.searchText);
console.log("value in scope.searchText " + $scope.searchText);
console.log(isNaN($tempVal));
}
controllers.js:185 Load values
controllers.js:77 ERASING!
controllers.js:212 value in this.searchText 14458.553
controllers.js:213 value in scope.searchText 14458.553
controllers.js:214 false
controllers.js:185 Load values
controllers.js:77 ERASING!
controllers.js:212 value in this.searchText 14458.55
controllers.js:213 value in scope.searchText 15429.477
controllers.js:214 false