2016-04-13 8 views
0

anglejsで新しい関数を作成する必要があるので、以下のようにしました。私はangular tree controlのいくつかの要素を無効にする必要があります。angularjsで関数を動的に作成する必要があります

$scope.filterTreeOption = { 
    dirSelectable: false, 
    multiSelection: true, 
    injectClasses: { 
     "li": "injectedTreeLi" 
    } 
} 

$scope.isFatalDisabled = false; $scope.isErrorDisabled = false; $scope.isWarnDisabled = false; $scope.isInfoDisabled = false; $scope.isDebugDisabled = false; $scope.isTomcatDisabled = false; $scope.isAgentDisabled = false; $scope.isSessionDisabled = false; $scope.isActivityDisabled = false; 

// Another function here which changes above boolean property to true if needed. 

var func = function(node) { 
    var tmp = (node.label.indexOf("Fatal") !== 0 && $scope.isFatalDisabled) && 
    (node.label.indexOf("Error") !== 0 && $scope.isErrorDisabled) && 
    (node.label.indexOf("Warn") !== 0 && $scope.isWarnDisabled) && 
    (node.label.indexOf("Info") !== 0 && $scope.isInfoDisabled) && 
    (node.label.indexOf("Debug") !== 0 && $scope.isDebugDisabled) && 

    (node.label.indexOf("Tomcat") !== 0 && $scope.isTomcatDisabled) && 
    (node.label.indexOf("Agent") !== 0 && $scope.isAgentDisabled) && 
    (node.label.indexOf("Session") !== 0 && $scope.isSessionDisabled) && 
    (node.label.indexOf("Activity") !== 0 && $scope.isActivityDisabled); 
    return tmp; 
} 

//and then I am trying to assign it to an already existing javascript object 

$scope.filterTreeOption.isSelectable = func; 

しかし、これは有効ではありません。これは正しい方法ですか、何か不足しています。助けてください。

+0

は、ノードの使用をクリアしていません... – thegio

+0

@thegio: 'node'はノードオブジェクトです。 [ここ](http://wix.github.io/angular-tree-control/#isSelectable)を確認してください – Ricky

+0

私にはうまく見えますが、その角度ツリーを使用するHTMLを見せてくれますか?そしてあなたのブラウザのdebogguerを使って、実際に呼び出されているかどうかを確認するためにあなたの関数にブレークポイントを追加してください。 – Walfrat

答えて

1

あなたがindexOfのためと照合する必要がある値が文字列の最初のインデックスである、0ではありませんが、-1

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/indexOf

$scope.filterTreeOption = { 
    dirSelectable: false, 
    multiSelection: true, 
    injectClasses: { 
     "li": "injectedTreeLi" 
    } 
} 

$scope.isFatalDisabled = false; $scope.isErrorDisabled = false; $scope.isWarnDisabled = false; $scope.isInfoDisabled = false; $scope.isDebugDisabled = false; $scope.isTomcatDisabled = false; $scope.isAgentDisabled = false; $scope.isSessionDisabled = false; $scope.isActivityDisabled = false; 

// Another function here which changes above boolean property to true if needed. 

var func = function(node) { 
    var tmp = (node.label.indexOf("Fatal") !== -1 && $scope.isFatalDisabled) && 
    (node.label.indexOf("Error") !== -1 && $scope.isErrorDisabled) && 
    (node.label.indexOf("Warn") !== -1 && $scope.isWarnDisabled) && 
    (node.label.indexOf("Info") !== -1 && $scope.isInfoDisabled) && 
    (node.label.indexOf("Debug") !== -1 && $scope.isDebugDisabled) && 

    (node.label.indexOf("Tomcat") !== -1 && $scope.isTomcatDisabled) && 
    (node.label.indexOf("Agent") !== -1 && $scope.isAgentDisabled) && 
    (node.label.indexOf("Session") !== -1 && $scope.isSessionDisabled) && 
    (node.label.indexOf("Activity") !== -1 && $scope.isActivityDisabled); 
    return tmp; 
} 

//and then I am trying to assign it to an already existing javascript object 

$scope.filterTreeOption.isSelectable = func; 
関連する問題