2013-09-27 30 views
0

我寫指令:指令範圍重寫父值

ensureUnique: function ($http, $parse) { 
     return { 
      scope: { 
       ensureUniqueType: "=", 
       ensureUniqueDisabled: "=" 
      }, 
     ... 
     } 
    }, 

但如果我嘗試使用這樣的:

<input name = "groupId" ng-show="anyFunction()" 
     type="text" ng-model="group.groupId" 
     ensure-unique="" ensure-unique-disabled="oldId != '-1'" ensure-unique-type="type" > 

input元素成爲無形的(不依賴於anyFunction結果)。看起來,指令範圍重寫ngShow值

+0

編譯有關ensureUniqueDisabled不是可分配表達式時,實際上應該給你一個錯誤。您正在使用'ensureUniqueDisabled:'='',但'='類型的綁定是爲可指定的值生成的。 您正在尋找一個表達式,它是一個'&'綁定。 看看[指導指南](http://docs.angularjs.org/guide/directive)和ctrl-f搜索'&',然後閱讀它。 您想擁有'ensureUniqueDisabled:'&''因爲您只有一個表達式,而不是可分配的模型。 –

回答

1

您應該做ng-show="$parent.anyFunction()",因爲該指令創建一個新的作用域。

之所以說它是不可見的是因爲,由於功能anyFunction()undefinedundefined將被函數toBoolean()ng-show指令進行評估,以false。你可以參考這個answer的細節。