我用文件夹和子文件夹实现了某种 FilePanel。
从 Chrome 开发人员工具中,我可以看到它ui.item.sortable.droptarget
的data
属性为parent-folder-id == 2
,但是当我尝试在代码中(通过 jquerydata
方法)访问它时,它返回 10(我最近所在的另一个文件夹的父级的值)。为什么它没有得到更新?当我移动到另一个文件夹时 -vm.parentId
根据该文件夹的服务器值分配新值。DOM 已正确更新...
<ul ui-sortable="vm.sortableOptions"
ng-model="vm.cache.items"
data-parent-folder-id="{{vm.parentId}}">
稍后添加:即使我将 .data() getter 更新为ui.item.sortable.droptarget.data("parentFolderId")
它仍然返回10
更新 2:添加了 plunker 演示: http ://plnkr.co/edit/14XfBOTFuJZ0oSy2ozqh?p=preview
<html ng-app="plunker">
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.6/angular.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.0.0-alpha1/jquery.min.js"></script>
<script src="app.js"></script>
</head>
<body ng-controller="MainCtrl">
<div class="xxx" data-parent="{{parentId}}"></div>
<button ng-click="getParentId()">Get Parent Id</button>
<br>
<button ng-click="setParentId(15)">Set Parent Id to 15</button>
<br>
<button ng-click="getParentId()">Get Parent Id</button>
<br>
{{parentId}}
</body>
</html>
应用程序.js
var app = angular.module('plunker', []);
app.controller('MainCtrl', function($scope, $element) {
activate();
function activate() {
$scope.parentId = 10;
}
$scope.setParentId = function(number) {
$scope.parentId = number;
}
$scope.getParentId = function() {
$scope.parentId = $($element).find('.xxx').data('parent');
}
});
当您单击此序列中的按钮时:Set - Get
-data
值成功更新。但是,当您单击另一个序列时:Get - Set - Get
- 出现与我之前的代码相同的问题 - 在获取值时使用新值更新值后 - 旧值返回。