相关疑难解决方法(0)

如何在AngularJS应用程序中添加一些小实用程序功能?

我想在AngularJS应用程序中添加一些实用程序功能.例如:

$scope.isNotString = function (str) {
    return (typeof str !== "string");
}
Run Code Online (Sandbox Code Playgroud)

最好的方法是将它们添加为服务吗?从我所看到的,我可以做到这一点,但后来我想在我的HTML页面中使用这些,所以如果它们在服务中仍然可能吗?例如,我可以使用以下内容:

 <button data-ng-click="doSomething()"
         data-ng-disabled="isNotString(abc)">Do Something
 </button>
Run Code Online (Sandbox Code Playgroud)

有人能给我一个如何添加这些的例子.我应该创建服务还是有其他方法来实现它.最重要的是,我希望这些实用程序功能在一个文件中,而不是与主要设置的另一部分相结合.

我知道有一些解决方案,但没有一个是如此清晰.

解决方案1 - Urban提出的建议

$scope.doSomething = ServiceName.functionName;
Run Code Online (Sandbox Code Playgroud)

这里的问题是我有20个功能和10个控制器.如果我这样做,那将意味着为每个控制器添加大量代码.

解决方案2 - 由我提出

    var factory = {

        Setup: function ($scope) {

            $scope.isNotString = function (str) {
                return (typeof str !== "string");
            }
Run Code Online (Sandbox Code Playgroud)

这样做的缺点是,在每个控制器的开头,我会对通过$ scope的每个服务进行一次或多次这些Setup调用.

解决方案3 - Urban提出的建议

城市提出的创建通用服务的解决方案看起来很好.这是我的主要设置:

var app = angular
    .module('app', ['ngAnimate', 'ui.router', 'admin', 'home', 'questions', 'ngResource', 'LocalStorageModule'])
    .config(['$locationProvider', '$sceProvider', '$stateProvider',
        function ($locationProvider, $sceProvider, $stateProvider) {

            $sceProvider.enabled(false);
            $locationProvider.html5Mode(true);
Run Code Online (Sandbox Code Playgroud)

我应该将通用服务添加到此,我该怎么做?

angularjs

146
推荐指数
3
解决办法
10万
查看次数

角辅助函数在哪里?

我试图用我的指令减少代码重复.我想编写一个生成指令的辅助函数,而不是手动定义它们.将指令定义更改为:

mydirectiveBuilder(function myButton(){
  return {
    scope: {
      toggle: "@pressed"
    }
  };
});
Run Code Online (Sandbox Code Playgroud)

我不知道应该去哪里(除了把它挂在窗外).角度是否为这些方法提供了一席之地?

angularjs

5
推荐指数
2
解决办法
1万
查看次数

标签 统计

angularjs ×2