2017-02-17 4 views
0

Ich habe eine modale Ansicht:Warum läuft die AngularJs-Einwegbindungsfunktion zweimal?

<ion-content id="friendContent" class="scroll-content has-header has-subheader" style="background-color: rgba(0, 0, 0, 0.6);"> 
    <ion-list class="list"> 
     <ion-item ng-repeat="objFriendInfo in objFriendInfoList | filter:{ Remark: data.searchQuery }" class="item item-avatar-left item-button-right searchFriendItemBackgroundColor" 
      ng-click="FriendList('chat',objFriendInfo,$event)"> 
      <img class="imgFriendUser" ng-class="{ 'gray':objFriendInfo.state == 0 }" ng-src="{{::objFriendInfo.icon }}"> 
      <h2 class="light">{{::GetAndSaveFriendName('friendlist_UserName',objFriendInfo.Remark,'16px', objFriendInfo) }}</h2> 
      <h3 class="positive" ng-click="FriendList('travellog',objFriendInfo,$event)">{{::GetAndSaveFriendTravellogName('friendlist_TravellogName',objFriendInfo.TravelLog_Name,'14px', objFriendInfo) }}</h3> 
      <div class="buttons" style="top:15px !important;"> 
       <button class="center button button-small button-positive ion-edit" ng-if="objFriendInfo.id != user.id" style="font-size:16px;" ng-click="FriendList('remark',objFriendInfo,$event)"></button> 
       <button class="center button button-small button-positive icon-mapsay_delete" ng-if="objFriendInfo.id != user.id" style="font-size:25px;" ng-click="FriendList('delete',objFriendInfo,$event)"></button> 
      </div> 
     </ion-item> 
    </ion-list> 
</ion-content> 

und die Funktion GetAndSaveFriendName Code:

$scope.GetAndSaveFriendName = function (name, text, fontSize, objFriendInfor) { 
       var strDisplayName = ""; 

       console.log(text); 

       if (objFriendInfor.strDisplayName) { 
        strDisplayName = objFriendInfor.strDisplayName;  
       } else { 
        strDisplayName = ServiceForChatCommon.GetShowDivText(name, text, fontSize); 
        objFriendInfor.strDisplayName = strDisplayName; 
       } 

       return strDisplayName; 
      }; 

Das Problem der Funktion GetAndSaveFriendName doppelt ausgeführt wird, was ist der Grund?

[EDIT]

I decalre den Controller wie:

.config([ 
     '$stateProvider', 
     function ($stateProvider) { 
      $stateProvider 
       .state('tabs.chat', { 
        url: '/chat', 
        views: { 
         'chatView': { 
          templateUrl: 'components/chat-component/chat-view.html', 
          controller: 'chatController' 
         } 
        } 
       }) 
     }]); 
+0

Normalerweise passiert dieses Problem, weil Sie den Controller doppelt deklarieren. Zum Beispiel eins in Ihrem html (Daten-ng-controller = "YOURCONTROLLER") und eins in Ihrem Routing ... ist es möglich? –

+0

@federicoscamuzzi Sir, ich habe nur einmal in meiner Router-Datei Decalre. – JiaoXN

+0

Welche Art von Router verwenden Sie? .. UI-Router? .. sei dir sicher, wie du deine routing deklarierst (mit/final) –

Antwort

0

Ich glaube, ich den Grund gefunden. Der $ Digest von AngularJs läuft mindestens zweimal, der zweite Recyle sorgt dafür, dass das DOM aktuell ist.