Javascript 角度js中的作用域访问

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

使用angularjs和ionic访问变量时遇到问题。我有一个页面,其中列出了大量项目:

<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