AngularJS - 范围不在jquery ui对话框内更新

时间:2014-04-08 11:00:27

标签: javascript jquery angularjs jquery-ui angularjs-scope

例如,

  1. 我有两个模板route_oneroute_two
  2. route_one中,我有一个打开jquery ui对话框的链接。在对话框里面,我可以     将某些值推送到添加值列表所在的范围     使用ng-repeat显示。
  3. 以下是问题,我已在范围中添加了一些值,然后转到route_two并再次返回route one。此时,范围应为空,但仍保留较旧的值。

    我已经创建了plunkr供您参考。

    http://plnkr.co/edit/xVtiYBwoM6h8SJpBIUh9?p=preview

    复制问题的步骤,

    1. 点击show dialog
    2. 添加一些值。您将看到,这些值将显示在主页面和对话框内。
    3. 点击Goto Rotue Two
    4. 点击Back
    5. 由于范围为空,因此将清除主页面中显示的值。但问题是,它内部没有更新 对话框。
    6. 我已尝试$apply$compile,但效果并不理想。

      提前致谢。

3 个答案:

答案 0 :(得分:0)

问题在于back() - 使用window.history.back();的方法。

替换

<a href="javascript:void(0);" ng-click="back();">Back</a>

<a href="#!/route_one">Goto Route One</a>

答案 1 :(得分:0)

Phylax指出它绝对正确。您可以使用标签并给予href,或者您也可以使用

$ location.path(&#39; / route_one&#39;),如果你想使用角度路由

答案 2 :(得分:0)

知道了!这很简单,我必须在关闭后销毁对话框。

查看更新的plunkr

http://plnkr.co/edit/Y8yVyp11h8FmKXQxcKXx?p=preview

var route_one = angular.module('routeOne',[]);

route_one.controller('route_one_controller', ['$scope', 
  function($scope){
    $scope.values = [];

    $scope.add_values = function(){
      if($scope.new_value.length <= 0){ return false; }
      $scope.values.push({name: $scope.new_value});
      $scope.new_value = '';
      $('#dialog').dialog('close');
    };

    $scope.show_dialog = function(){
      $('#dialog').dialog({
        height: 'auto',
        width: 370,
        resizable: false,
        autoOpen: false,
        close: function(){
          $(this).dialog('destroy');
        }
      });
      $('#dialog').dialog('open');
    };
  }
]);