一尘不染

如何在angularjs中从HTML调用工厂方法?

angularjs

controller我遵循的方法:

var isPaused  = false;

$scope.switcher = function (booleanExpr, trueValue, falseValue) {
    return booleanExpr ? trueValue : falseValue;
};

$scope.isPaused = function () {
    return isPaused;
};

我可以从HTML调用它,例如:

<body  ng-controller="Cntrl">

...
<h4>
 {{ switcher( isPaused(), 'Search Address Mode', 'Search Location Mode' )}}
</h4>
 <div class="btn-group">
    ...     
 </div>

如您所见,如果我得到isPaused()回报false``<h4>Search Location Mode</h4>

这是实用程序,因此我想将其定义为 factory

feederliteModule.factory('switcher', function () {   
return {
    sw: function (booleanExpr, trueValue, falseValue) {
        return booleanExpr ? trueValue : falseValue;  
    }
  };
});

没有例外

当我尝试这样称呼它时:

<h4>
 {{ switcher.sw( isPaused(), 'Search Address Mode', 'Search Location Mode' )}}
</h4>
 <div class="btn-group">
    ...     
 </div>

没发生什么事。

**我已添加'switcher'到控制器。

如何从HTML调用工厂方法?

(*如果不清楚,欢迎您更改/编辑我的问题)

谢谢,


阅读 235

收藏
2020-07-04

共1个答案

一尘不染

好吧,您实际上不应该这样做…但是您 可以 做的是将服务对象放在$ scope的一个属性中,然后从那里调用它。

app.controller('MyCtrl', function($scope, switcher) {
   $scope.switcher = switcher;
});
2020-07-04