通过jQuery回调修改作用域变量

Modify scope variable through jQuery callback

本文关键字:作用域 变量 修改 回调 jQuery 通过      更新时间:2023-09-26

我有以下代码片段:

  $scope.addName = (name) ->
    $scope.names.push name
  $(".names").draggable
    helper: "clone"
    revert: true
  $(".name-list").droppable
    accept: ".names"
    activate: ->
      $(@).addClass "bordered"
    deactivate: ->
      $(@).removeClass "bordered"
    drop: (e, ui) ->
      name = ui.draggable.attr "data-names-name"
      $scope.addName name

在这里,用户在名称列表中拖动一个名称(表示为)div,然后将拖动的名称添加到名称数组中。

问题是,在将新名称压入后,names数组仍然为空。

将其包装在$scope中。$apply

..
$scope.$apply(function(){
  $scope.addName(name);
});

当脚本在angular上下文之外执行时,你需要手动让angular触发一个摘要循环并更新视图。

在脚本中,您应该能够执行以下操作:

drop: (e, ui) ...
$(e).scope().$digest();

我注意到$scope已经在drop函数中可用。那么下面这个更好:

 $scope.$digest();