0

這是我在模板中的代碼。如何在指令中定義兩個ng-click函數?

<button ng-click="{{backFunction}}" ng-show="{{backShow}}"> Back </button> 
    <button ng-click="{{nextFunction}}" ng-show="{{nextShow}}"> Next </button> 

指令代碼

directive('navigationButtons', function() { 
    return { 
     restrict: 'AE', 
     templateUrl : 'angular/app/partials/navigationButtons.html', 
     scope: { 
      backFunction: '@', 
      backShow: '@', 
      nextFunction: '@', 
      nextShow: '@' 
     } 

     }; 
}) 

查看代碼(這裏我使用的指令)

<navigation-buttons nextFunction="a.active=true" nextShow="true" backFunction="b.active=false" backShow="true"></navigation-buttons> 

它是示值誤差爲Syntax Error: Token 'nextFunction' is unexpected

+0

您正在使用'@'定義隔離範圍,而一個指令只能有一個隔離範圍我認爲 – tom10271

+0

@aokaddaoc爲false,您可以有多個隔離範圍。 – Roylee

回答

0

你在喲一些錯誤我們的代碼,首先,在你的模板,你必須改變短線分隔的駝峯名稱,並刪除大括號

<button ng-click="backFunction()" ng-show="backShow"> Back </button> 
<button ng-click="nextFunction()" ng-show="nextShow"> Next </button> 

現在,在你的指令替換範圍隔離:

directive('navigationButtons', function() { 
return { 
    restrict: 'AE', 
    templateUrl : 'angular/app/partials/navigationButtons.html', 
    scope: { 
     backFunction: '&', 
     backShow: '@', 
     nextFunction: '&', 
     nextShow: '@' 
    } 
}; 

我創建了一個jsfiddle與您的代碼工作:http://jsfiddle.net/v7V6y/

最好!

+0

它工作!非常感謝:-) :-) –

+0

何時使用/不使用'{{}}'? –

+0

這取決於您正在使用的指令。 如果指令需要一個字符串,則需要使用{{var}}, ,但是如果您的指令需要表達式,則不應使用{{}}。 例如:指令ngClick,ngShow,ngIf期望表達式,但指令ngSrc需要一個字符串。 – marian2js

2

你應該接收功能與&而不是@

也收到顯示/隱藏布爾與=如果你需要雙向綁定&不想設置$手錶/ $觀察

directive('navigationButtons', function() { 
    return { 
     restrict: 'AE', 
     templateUrl : 'angular/app/partials/navigationButtons.html', 
     scope: { 
      backFunction: '&', 
      backShow: '=', 
      nextFunction: '&', 
      nextShow: '=' 
     } 

     }; 
}) 

檢查這個環節上passing functions to directive

編輯

也檢查了這great article的指令

+0

我做了這些更改,但仍顯示相同的錯誤。 :-( –

+0

可以請你安裝蹲點,我會盡量解決問題 – harishr

相關問題