Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 角度指令在ng repeat上更新_Javascript_Angularjs_Scope_Angularjs Directive_Angularjs Ng Repeat - Fatal编程技术网

Javascript 角度指令在ng repeat上更新

Javascript 角度指令在ng repeat上更新,javascript,angularjs,scope,angularjs-directive,angularjs-ng-repeat,Javascript,Angularjs,Scope,Angularjs Directive,Angularjs Ng Repeat,我希望每次更新ng repeat时都能更新我的ngDirective。 我的代码如下所示: <div ng-cotroller="SomeCtrl"> <div ng-repeat="i in data" myDirective> {{i}} </div> </div> App.controller("SomeCtrl", function($scope) { $scope.data = [1, 2,

我希望每次更新ng repeat时都能更新我的ngDirective。 我的代码如下所示:

<div ng-cotroller="SomeCtrl">
    <div ng-repeat="i in data" myDirective>
        {{i}}
    </div>
</div>



App.controller("SomeCtrl", function($scope) {
    $scope.data = [1, 2, 3];
});

App.directive("myDirective", function() {
    $(this).sortable({ // how I can get the element?
        start: function(event, ui) {
            ...
        },
        stop: function(event, ui) {
            ...
        }
    });
});

{{i}
App.controller(“SomeCtrl”,函数($scope){
$scope.data=[1,2,3];
});
App.directive(“myDirective”,function()){
$(this).sortable({//如何获取元素?
开始:功能(事件、用户界面){
...
},
停止:功能(事件、用户界面){
...
}
});
});
问题

  • 如何将as
    $(this)
    元素与指令一起使用
  • 每次执行
    $scope.data
    的值发生变化时,我如何执行此指令

谢谢。

首先,指令至少接受三个参数:范围、元素和属性

function(scope, element, attrs) {....}
因此,您的$(this)等于元素,或者$(元素[0])

其次,最好使用为此目的制定的angularJS指令

对于可排序,请使用此

我不太喜欢在AngularJS中使用JQuery,因为它在框架不知道的情况下操作DOM


但是,如果没有针对特定领域的纯angularjs指令,则可以使用它,只要它被适当地包装为一个指令

您究竟是如何更改$scope.data中的值的?根据我使用Angular的经验,您只需要确保
$scope.data
具有新数据,并且已经显示了更改。一个非常简单的想法,你能解释一下ngDirective的用途吗?sortable通常在包含项目的父容器上调用。你的问题是什么还不清楚。请在plunker中创建一个演示,复制您的问题。此外,您应该使用
link
来访问元素,并在每次重新调用ng repeat以执行jquery sortable时运行所需的可排序代码。例如,我的服务更新$scope.data,ng repeat呈现更改,并且我的指令是reexecute。