2013-11-28 77 views
0

我知道,你可以通過綁定一個指令:替代方式綁定指令

HTML:

<mydirective /> 

JS:

app.directive('mydirective', function() {}) 

但是我看到this SO回答。 那麼是否有可能綁定一個像?

HTML:

<input ng-something="foo()"> 

JS:

app.directive('ngSomething', function() {}) 

或者我應該始終有template:指令內,以便我注入的代碼。我的目的是綁定ng-keydown上的現有輸入:

這不起作用:

<input type="text", placeholder="Search stuff" ng-model="searchBar" ng-keydown="dosomthg()"> 

所以我基於上述答案嘗試:

<input type="text", placeholder="Search stuff" ng-model="searchBar" ngSearchbar="dosomthg()"> 

+0

[看這裏](http://plnkr.co/edit/B2D0PFiPKmxnFzFBBCrZ)...它的工作原理! –

回答

1

應該[我]總是有模板?

否。除了修改DOM結構,指令也可以提供純粹的行爲。

所以是有可能的指令綁定,如:我的指令性= 「someFunction()」

是。最簡單的情況就是這樣PLNKR。對於您的指令,您可以將委託從父範圍傳遞給函數,甚至可以匿名角表達式。看一看,玩一下吧!如果您想了解更多信息,請嘗試閱讀角度docs

+0

的例子謝謝。我還給了'my-directive =「someFunction($ event)」'來傳遞事件資源。我正在閱讀文檔,但Ajs不是最好的:) – Diolor

0

你並不總是必須包含模板。但是,如果你要包括一個模板,你可以這樣說:

指令

app.directive('ngSomething', function() { 
    return { 
    restrict: 'E', // means element 
    template: '<input type="text", placeholder="Search stuff" ng-model="searchBar" ng-keydown="dosomthg()">' 
    } 
}); 

HTML

<ng-something></ng-something> 

dosomthg()

$scope.dosomthg = function() { 
    $scope.name = 'mate'; 
}; 

http://plnkr.co/edit/nV57jx?p=preview

+0

沒有指令,它的工作原理以及... [PLUNK](http://plnkr.co/edit/B2D0PFiPKmxnFzFBBCrZ) –

+0

是的,它的確如此。但他想要一個指令 – jzm