Angular.js自定义jQuery脚本

时间:2014-06-13 15:28:50

标签: jquery angularjs

我刚刚开始使用Angular.js,正如我通常所做的那样,我很快就跳到包括jquery和custom.js文件,其中我有所有自定义的小jquery片段,如点击事件等。

当然,这不起作用。

做了一些阅读,结果我必须使用ng-click。

因此,设法通过将此声明传入我的控制器来获得一个片段:

$scope.alert = function(text) {
    alert("YES!");
};

你可能想象,不理想。

问题是:

我怎么能有一个custom.js文件,或者一个服务,或其他东西,其中可以包含所有jquery片段,我可以用例如ng-click =“alert”来调用它们,或类似的东西这一点。

我尝试为它构建服务,但我无法让它正常工作。我建立的唯一服务也是我知道在Angular中提供图像的唯一方式,那就是:

'use strict';

//Image service
angular.module('mean.system').factory('ImageSol', [
    function() {
        return {
            logo : 'public/system/assets/img/logo-sol.png'
        };
    }
]);

对我而言,仅仅能够提供单个图像或单个jquery片段似乎过分了。

1 个答案:

答案 0 :(得分:0)

您无法导入所有jQuery插件脚本并在任何需要的地方使用它们(如果可以,请不要!)

您必须为每个插件构建单独的工厂(或服务,...),并通过注入您想要的任何控制器来使用它们。

正如您可能已经注意到的,这是AngularJS背后的主要思想,即依赖注入!

例如,jQuery中有一个警报插件,最近我在角度上使用了很多像这样的工作:

myApp.factory('AlertFac',function() {
    return {
        alertS:function(message) {
            alertify.set({
                delay : 5000
            });
        alertify.success("<span>"+message+"</span>");
        //return false;
    } }
});

这个 alertify 函数来自一个jQuery插件,我插入到我的html索引中,在jQuery下面

所以,当我需要在我的控制器中发出警报时,我会这样做:

myApp.controller('mainCtrl',function($scope,AlertFac){
     if(user clicked on a particular button){
         AlertFac.alertS('Hey buddy , whats up ?');
     }
})