Jquery mobile 单击添加项后刷新jquery mobile listview失败
我正在尝试将项动态添加到jquery mobile的listview中。我使用ngClick事件添加项目,并使用ngRepeat显示列表。我已调用listview刷新,但最新项目无法正确设置样式。我应该使用哪个事件来正确刷新?谢谢Jquery mobile 单击添加项后刷新jquery mobile listview失败,jquery-mobile,angularjs,Jquery Mobile,Angularjs,我正在尝试将项动态添加到jquery mobile的listview中。我使用ngClick事件添加项目,并使用ngRepeat显示列表。我已调用listview刷新,但最新项目无法正确设置样式。我应该使用哪个事件来正确刷新?谢谢 $scope.addItem = function () { $scope.userList.push($scope.userInputText); $scope.userInputText = null; $("#listview1").li
$scope.addItem = function () {
$scope.userList.push($scope.userInputText);
$scope.userInputText = null;
$("#listview1").listview("refresh");
}
发生这种情况是因为JQuery UI和Angular都试图使用document ready事件更新DOM。竞争条件正在发生,在这种情况下,Angular在JQuery已经创建listview之后添加新数据。Sheetal的解决方案之所以有效,是因为它强制JQuery在Angular填充数据后修改DOM并创建listview
另一个解决方案是一个恰当地称为的工具。以下指令适用于我。只需将列表视图添加到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
};
});
- {{user.name}
应用程序指令('listView',函数(){
变量链接=函数(范围、元素、属性){
$(元素).listview();
作用域$watchCollection(attrs.watch,function(){
$(元素).listview(“刷新”);
});
};
返回{
限制:“EA”,
范围:假,
链接:链接
};
});
我已经在一把新小提琴上试过了。它可以工作,但我想知道是否有更好的事件,我可以做这个刷新。我没有使用angular.js,但使用了jquerymobile,在JQM中,这不会发生,刷新会立即工作,不知道为什么在这种情况下不能工作!!!我猜AngularJS在调用刷新时还没有更新列表。这两个框架不知道另一方的工作。工作起来很有魅力。谢谢!谢谢,这真的帮助了我。对于那些努力工作的人,我必须确保我的列表不在带有data role=“controlgroup”的div中,并且确保正确设置数据监视。
<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
};
});