ไม่สามารถรีเฟรช listview บนมือถือ jquery หลังจากเพิ่มรายการโดย ngClick

ฉันกำลังพยายามเพิ่มรายการลงใน listview ของ jquery mobile แบบไดนามิก ฉันเพิ่มรายการโดยใช้เหตุการณ์ ngClick และแสดงรายการโดยใช้ ngRepeat ฉันเรียกการรีเฟรช listview แล้ว แต่รายการล่าสุดไม่สามารถจัดรูปแบบได้อย่างถูกต้อง ฉันควรใช้เหตุการณ์ใดเพื่อรีเฟรชอย่างถูกต้อง? ขอบคุณ.

$scope.addItem = function () {
    $scope.userList.push($scope.userInputText);
    $scope.userInputText = null;
    $("#listview1").listview("refresh");
 }

http://jsfiddle.net/hFj2T/


person cwlaualex    schedule 23.07.2013    source แหล่งที่มา


คำตอบ (3)


คำสั่งต่อไปนี้ใช้ได้กับฉัน เพียงเพิ่ม list-view ให้กับแท็ก ul ของคุณและ data-watch="userList" เพื่อบอกเชิงมุมว่าวัตถุใดที่ควรระวังการเปลี่ยนแปลง

<ul list-view data-watch="userList" data-role="listview" data-filter="true" >
   <li ng-repeat="user in userList">{{user.name}}</li>
</ul>

app.directive('listView', function () {
  var link=function(scope, element, attrs) {
    $(element).listview();
    scope.$watchCollection(attrs.watch, function() {
      $(element).listview("refresh");
    });
  };
  return {
    restrict: 'EA',
    scope:false,
    link: link
  };
});
person Dustin Butler    schedule 14.12.2014
comment
ทำงานเหมือนมีเสน่ห์ ขอบคุณ! - person Chris Aelbrecht; 13.05.2015
comment
ขอบคุณสิ่งนี้ช่วยฉันได้จริงๆ สำหรับใครก็ตามที่ดิ้นรนเพื่อให้สิ่งนี้ได้ผล ฉันต้องทำให้แน่ใจว่ารายการของฉันไม่อยู่ใน div ที่มี data-role=controlgroup และต้องแน่ใจว่าได้ตั้งค่า data-watch อย่างถูกต้องด้วย - person AKMorris; 13.09.2017

สิ่งนี้เกิดขึ้นเนื่องจากทั้ง JQuery UI และ Angular กำลังพยายามอัปเดต DOM โดยใช้เหตุการณ์พร้อมเอกสาร สภาพการแข่งขันเกิดขึ้นโดย Angular กำลังเพิ่มข้อมูลใหม่หลังจากที่ JQuery ได้สร้าง listview แล้ว โซลูชันของ Sheetal ใช้งานได้เนื่องจากบังคับให้ JQuery แก้ไข DOM และสร้าง listview หลังจาก Angular ได้เติมข้อมูลแล้ว

อีกวิธีหนึ่งคือเครื่องมือที่เรียกว่า jquery mobile Angular adapter

person Bobwise    schedule 21.10.2013

person    schedule
comment
ฉันได้ลองสิ่งนี้ในซอใหม่ ใช้งานได้ แต่ฉันอยากรู้ว่ามีกิจกรรมอื่นใดที่ดีกว่าที่ฉันสามารถทำได้ในการรีเฟรชนี้หรือไม่ jsfiddle.net/hFj2T/4 - person cwlaualex; 23.07.2013
comment
ฉันไม่ได้ใช้ Angular.js แต่ใช้ jquerymobile ใน JQM สิ่งนี้จะไม่เกิดขึ้นและการรีเฟรชทำงานได้ทันที ไม่แน่ใจว่าทำไมในกรณีนี้จึงไม่ได้ผล !!! - person Sheetal; 23.07.2013
comment
ฉันเดาว่า AngularJS ยังไม่ได้อัปเดตรายการเมื่อมีการเรียกการรีเฟรช กรอบทั้ง 2 นี้ไม่รับรู้ถึงการทำงานของอีกฝ่าย - person cwlaualex; 23.07.2013