通过jQuery回调修改范围变量

时间:2014-06-14 08:55:20

标签: javascript angularjs coffeescript

我有以下代码段:

  $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,然后将拖动的名称添加到名称数组中。

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

2 个答案:

答案 0 :(得分:1)

将其包装在$ scope中。$ apply(抱歉不使用CoffeeScript)

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

答案 1 :(得分:0)

每当脚本在角度上下文之外执行时,您需要手动让angular知道触发摘要周期并更新视图。

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

drop: (e, ui) ...

$(e).scope().$digest();

我注意到$ scope已经在drop函数中可用了。然后以下是更好的:

 $scope.$digest();