angularjs:在angularjs控制器中访问jquery变量

时间:2015-04-04 04:22:00

标签: javascript jquery angularjs

angular js code

angular.module('myapp')
  .controller('PostsController',  function($scope, $window, $http){

  $scope.$watch('selectedCities', function(newValue, oldValue) {
     if(newValue === oldValue ){
      return;
    }
    //to call a jQuery variable wookmark

  }, true);
}

jquery代码

 $(function ($) {
      var container = '#wookmark_container',
          $container = $(container),
          tileCount = 30,
          $window = $(window),
          $document = $(document),
          wookmark;

      // Initialize Wookmark
      wookmark = new Wookmark(container, {
        offset: 5, // Optional, the distance between grid items
        outerOffset: 10, // Optional, the distance to the containers border
        itemWidth: 260, // Optional, the width of a grid item
        autoResize: true
      });

    });

我想要做的是如果选择选项更改我想重新加载一个wookmark jquery插件。

在angularjs中调用jquery vairable是否可行?

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

您可以引用Angular控制器范围内的任何变量。

看起来你在自己的功能范围内定义了woodmark,这意味着你无法访问它。要访问它,您需要将其设置为全局窗口对象的属性,如下所示:

window.woodwork =  "initial value";

然后,您可以使用$window服务在控制器中引用它。

$window.woodwork = "updated value";

答案 1 :(得分:1)

试试这个,

  1. 声明变量' wookmark'在父或全局范围内,即在就绪块之外。这将使该变量在任何地方都可访问。您将能够在角度控制器

    中访问它
    var woomark;
    
    $(function ($) {
       // Initialize Wookmark
       wookmark = new Wookmark(container, {...});
    });
    
  2. 要重新加载woomark插件,您可以在代码中进行如下所示的呼叫。

    angular.element(document.querySelector('#wookmark_container')).trigger('refreshWookmark');

  3. 或直接

    $('#wookmark_container').trigger('refreshWookmark')
    

    以下是' refreshWookmark'的文档链接 https://github.com/GBKS/Wookmark-jQuery