2013-04-16 107 views
0

我有一個僞指令中ng-switch如下:AngularJS - 指令裏面NG-開關不能正常工作

<div ng-switch on="myModel"> 
    <div ng-switch-when="foo"> 
     <zippy></zippy> 
    </div> 
    //Other ng-switch-when directives 
</div> 

該指令被定義爲:

app.directive('zippy', function() { 
    return { 
     scope: false, 
     template: "Hello FooBar" 
    }; 
}); 

現在,頁面加載的時候,雖然myModel確實成爲foo,模板不會加載。以下是在borwser元素的狀態:

<div ng-switch-when="foo" class="ng-scope"> 
    <zippy></zippy> 
</div> 

ng-scope將追加 - 完蛋了。該元素不會更改 - 該指令不會被替換爲模板。我究竟做錯了什麼?我如何獲得指令的工作?

+1

默認情況下,指令是 「唯一屬性」,那麼至少你需要在您的指令定義中添加'restrict:'E''。 –

+0

我的不好!我知道'restrict'有一個默認值,但我假設它是元素而不是屬性。 – callmekatootie

+0

我有完全相同的問題,但我有'EA'的限制屬性。 ng-scope類被應用到我的自定義指令元素,但它不會被渲染。似乎是一個角度錯誤。 – les2

回答

1

您需要將restrict添加到您的指令:

演示:http://plnkr.co/edit/Jc77jrY4U0xGalN5QkZA

app.directive('zippy', function() { 
    return { 
     scope: false, 
     template: "Hello FooBar", 
     restrict: 'E' 
    }; 
}); 

文檔:http://docs.angularjs.org/guide/directive

限制 - EACM的子集的字符串,它限制了指令到特定的指令聲明樣式。如果省略指令只允許屬性。

ë - 元素名稱:

A - 屬性:

Ç - 類:

米 - 評論: