控制器函数未从AngularJS中的指令模板调用

时间:2016-03-27 06:32:27

标签: angularjs angularjs-directive angularjs-scope

指令模板(items.html)

<h1>
    This is Second.
    {{header}}

</h1>
<hr>
<ul>  
  <items-list item-cart="items" format-currency-function="formatPrice(cost)"></items-list>
</ul>

此自定义指令用于Second.html

myApp.directive("itemsList", function(){
    return{
        templateUrl:"contents/Views/Directives/Items.html",
        replace: true,
        scope:{
            itemCart: "=",
            formatCurrencyFunction: "&"
        },
        restrict:"EACM" // E-Element A-Attribute C-Class M-Comments        
    }
})

myApp.controller('secondController', ['$scope', '$log', '$http','$routeParams', function($scope, $log, $http, $routeParams) {
     $scope.formatPrice = function(price){        
        return "₹ "+parseFloat(price).toFixed(2);
    };
    $scope.header = 'Second ' + ($routeParams.num || "");
    $scope.testSecond = "Second";
    $http.get("/items")
    .success(function(data){
        $scope.items = data;        
    });  

}]);

Controller的代码是:

1 2 3 4

函数formatPrice不是从指令Items.html

调用的

我的代码中需要纠正哪些内容才能使其正常工作?

4 个答案:

答案 0 :(得分:0)

在指令的链接功能中,您将要调用这样的方法:

import numpy as np

A = np.random.rand(197, 10)
B = np.random.rand(3247, 197, 10)

loc = np.where(A > 0.9)

B[:, loc[0], loc[1]].mean(axis=1)

})

答案 1 :(得分:0)

通过在Second.html页面中使用ng-repeat而不是指令来实现此功能。

指令模板(items.html)

<li>
    {{item.title}} <br>
    {{item.category}} &nbsp
    {{ formatCurrencyFunction({cost: item.price}) }}
</li>

此自定义指令用于Second.html

<h1>
    This is Second.
    {{header}}

</h1>
<hr>
<ul>  
  <items-list item="item" format-currency-function="formatPrice(cost)" ng-repeat="item in items"></items-list>
</ul>

JS文件中的代码

myApp.directive("itemsList", function(){
    return{
        templateUrl:"contents/Views/Directives/Items.html",
        replace: true,
        scope:{
            item: "=",
            formatCurrencyFunction: "&"
        },
        restrict:"EACM" // E-Element A-Attribute C-Class M-Comments        
    }
})

答案 2 :(得分:0)

在指令的link函数中,您需要通过向该属性应用一些事件来调用该方法

答案 3 :(得分:0)

控制器函数'formatCurrencyFunction()'不能通过将其放在表达式中来调用。

要使用你需要根据偶数调用它的功能,在你的情况下,ng-init将起作用。

<li ng-repeat="item in itemCart" ng-init="formatCurrencyFunction({cost: item.price})">
{{item.title}} <br>
{{item.category}}
</li>