2016-07-14 128 views
0

非常新的角;試着理解爲什麼這個指令不起作用。請向我指出有關學習什麼概念的方向。指令:控制器不是功能

該指令正在,當我不得不寫出來模板作爲一個字符串,但它是非常難看,我想將它們放在一個單獨的HTML文件。

index.html中

<div message-modal trigger="trigger_message_modal"></div> 

錯誤消息$scope.trigger_message_modal is not a function

的不工作directives.js

app.module.directive('messageModal', function ($compile) { 
    return { 
     scope: { 
      trigger: "=trigger" 
     }, 
     controller: ['$scope', '$element', '$attrs', '$timeout', function ($scope, $element, $attrs, $timeout) { 

       $scope.trigger = function(title, message, modal_class, color, auto_hide){ 
        $scope.message = message; 
        $scope.modal_class = modal_class; 
        $scope.color = color; 
        $scope.title = title; 

        $('#messageWell').modal('show'); 

        if(auto_hide == true){ 
         $timeout(function(){ 
          $('#messageWell').modal('hide'); 
         }, 1000) 
        } 
       }; 
     }], 
     restrict: "E", 
     templateUrl :"well.html"       
    }; 
}); 
+1

'$ scope.trigger_message_modal'從哪裏觸發?在指令控制器被實例化之前,這個函數是否會觸發定時問題? – jchen86

回答

0

該指令被限制到E,這意味着應該指令被用作元素, <message-modal trigger="trigger_message_modal"> </message-modal>。只有這樣trigger屬性才能在指令中使用該指令的作用域。 如果您需要使用message-modal作爲屬性,則將限制更改爲A,但您將無法訪問trigger作爲範圍變量,需要使用父元素的$attrs訪問。

+0

爲什麼在使用限制「A」時無法訪問'trigger'? – Icycool

+0

'trigger'不能在其範圍內訪問。只能從父屬性訪問。編輯了我的答案以清楚說明。 – rraman

+0

我嘗試使用兩個,他們幾乎一樣[jsbin](https://jsbin.com/sutedunoxo/edit?html,js,output) – Icycool

相關問題