我想定製ng-if
,但找不到應該如何完成的任何好例子。有沒有簡單的方法來擴展angularjs中的屬性指令?
什麼我的目標是:
<div my-if="someText">....</div>
我想,要擴大到
<div ng-if="true|false">....</div>
其中true|false
取決於someText
。是否有捷徑可尋?
我想定製ng-if
,但找不到應該如何完成的任何好例子。有沒有簡單的方法來擴展angularjs中的屬性指令?
什麼我的目標是:
<div my-if="someText">....</div>
我想,要擴大到
<div ng-if="true|false">....</div>
其中true|false
取決於someText
。是否有捷徑可尋?
要用ng-if
代替指令,需要重新編譯。我得到它的工作最簡單的方法是這樣的:
(function() {
angular.module('enheter').directive('toggleIf',['$compile', function($compile) {
return {
restrict: 'A',
compile: function(el,attr) {
var toggleName = attr.toggleIf;
var toggleOn = toggleName === "sometext";
el.attr('ng-if', toggleOn);
el.removeAttr('toggle-if');
var fn = $compile(el);
return function(scope) {
fn(scope);
};
}
};
}]);
})();
該指令上面首先得到toggleIf
屬性的值。定義toggleOn
的值的部分將更加複雜,但這顯示了我的目標。然後,我只需將ng-if
添加到該元素並刪除toggle-if
。如果toggle-if
未被移除,則會有無限循環,因爲對$compile
的調用將一次又一次地執行此功能。
做得很好......你有沒有在ng-repeat中測試過它? – malix
<div ng-if="showText ? true : false">....</div>
但是如果你的showText是一個布爾值,它會做同樣的事情。
你甚至不想回答我的問題。 –
你在說「where true | false取決於someText」。你也可以嘗試更好的問題。 –
我想我說得很清楚。根據提供給我的指令的值,我希望將其擴展爲對應於該值的'ng-if'。 –
爲什麼不通過'ng-if'指令本身調用一個函數,它會像'ng-if =「check()''一樣決定值'true/false',然後函數就是'$ scope。 check = function(){return someText =='something'}' –
我想將它用於功能切換,所以我想要一個簡單的方法來寫'toggle-if =「mytogglename」'。 –
ng-if很難擴展/重用... ng-show更容易,因爲你可以使用display:none並且自己打開... – malix