如何使用不同的templateurl和conroller从另一个控制器函数调用该指令?

时间:2016-03-08 07:16:46

标签: javascript angularjs angularjs-directive controller

我是AngularJS的新手。  我有以下HTML代码

<div id="products" ng-contoller="productController" listProducts></div>

这将在角度js运行时执行,我将获取属性中的所有产品。我的指示如下

learnApp.directive('listproducts',function(){

    return{
        restrict: 'A',
        templateUrl:"products.php",
        controller:"productController"
    };
});

但我正在购买带有选定产品ID的购物车

因此,当点击购物车时,我想用指定的产品详细信息替换该指令。

<span class='glyphicon glyphicon-shopping-cart' ng-click='productDetails();'>{{totalProductList.totalProducts}}</span>

如下所示

productDetails函数应调用该指令并将其替换为productDetails.php

learnApp.directive('listproducts',function(){

    return{
        restrict: 'A',
        if(shoppingCartImageclicked)
        {
        templateUrl:"productDetailsForSelectedItems.php",
        controller:"productDetailControllerForSelectedItems"
        }
        else // initial load
        {
            templateUrl:"productDetails.php",
            controller:"productDetailController"
        }
    };
});

1 个答案:

答案 0 :(得分:1)

说实话,这似乎是个坏主意。这不是指令的使用方式。 一个指令应该有一个任务。你的指令有两个任务,因此应该是两个指令。 您将不得不定义第二个指令并以编程方式(最好使用javascript)解决视图更改,例如使用不同的路径,或者至少使用ng-show / ng-if。