使用grunt在angular指令中调用js文件

时间:2015-02-20 09:37:44

标签: javascript angularjs angularjs-directive gruntjs

我在使用grunt build命令之前编写了一个很有效的指令。事实上,我在下面的这个初始化不再起作用,因为在构建之后,库的路径不正确:

element.intlTelInput({
            validationScript: "bower_components/intl-tel-input/lib/libphonenumber/build/isValidNumber.js",
            preferredCountries: ['ch', 'fr']
        });

是否有可能在app和dist(在grunt构建之后)上下文或其他类似的东西中使用相对路径?

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

您可以尝试grunt-ng-constant,其中两个配置用于本地环境,另一个用于生产环境,在构建任务中,在所有过程之前添加生产ngconstant,例如:

ngconstant: {
            options: {
                dest: 'app/scripts/configuration.js',
                name: 'configuration'
            },
            local: {
                constants: {
                    'validationScript': 'bower_components/intl-tel-input/lib/libphonenumber/build/isValidNumber.js',
                }
            },
            dist:{
                constants: {
                   'validationScript': 'prodPathFile',
                }
            }
        },


grunt.registerTask('build', [
        'ngconstant:dist',
        'other_tasks'
    ]);

只需要配置模块到您的角度应用程序,并在您的指令中使用常量validationScript,例如:

app.directive('yourdirective', ['validationScript', function(validationScript) {
  return {
   link: function(scope, element) {
element.intlTelInput({
            validationScript: validationScript,
            preferredCountries: ['ch', 'fr']
        });   
       }
   }
}]);