2013-08-21 1 views
18

私はオブジェクトがあります:model.data このオブジェクトに質問の配列があり、その配列に複数の要素がある場合、どのようにボタンを無効にすることができますか?配列に要素がある場合、どのようにAngularJSのボタンを無効にすることができますか?

私がしようとしなかった:

data-ng-disabled="model.questions.length > 0" 

しかし、これはまったく機能していないようです。

+0

あなたは 'ng-app'を忘れましたか? –

+0

私はng-appを持っています。回答した以外のポスターは、私が関数を作成する必要があることを示唆しています。 – Melina

+0

あなたのコードは良く見えます。あなたはフィドルを作ることができますか?あなたは間違いなくそのための関数は必要ありません。 – zsong

答えて

27

EDITがポストに応じて答えを変更し、

何についてのコメント:

data-ng-disabled="checkQuestions()" 

そして、あなたのコントローラ内:それは本当にダウンしています何

$scope.checkQuestions = function() { 
if (model.questions.length > 1) { // your question said "more than one element" 
    return true; 
    } 
    else { 
    return false; 
    } 
}; 

をこのタスクを達成するには複数の方法があるということです。式、関数、結合変数(ここでのさまざまな応答によって示されています)。いずれも作業していない場合は、代わりにモデルに問題がある可能性があります。いくつかの不一致を解消できる場合(モデルの構造を尋ねる私のコメントを参照してください...配列に何かがある場合、または配列に複数のものがある場合のみ、それを無効にすることに興味がありますか? )、これを理解するのに役立ちます。

ここには3つのアプローチがすべて示されています。彼らはすべて働いていることがわかります。あなたのコントローラーをフィドルと比較し、それが一緒に来るかどうか確認してください。

http://jsfiddle.net/jlmcdonald/P8qjR/3/

+0

さて、私は今チェックしているので、チェックをする関数が必要です。 – Melina

+0

また、 "質問の配列を持っています" :-)私はこれをパラメータ付きの関数として作る方が良いかどうか疑問に思っています。 AngularJSがなぜ関数を呼び出す必要はなく、カウントを行う機能を含んでいないのですか? – Melina

+2

関数を呼び出す必要はなく、式は許されています。これは、同じことを達成する別の方法として、あなたの成功として報告するものを見ることです。表現や​​機能のどちらも機能しない場合、問題はあなたのモデルにある可能性があります。あなたのモデルがどのように見えるか)。 – jlmcdonald

0

falseにデフォルト値を設定し、モデルを作成します。配列の長さが空でない場合は、その値をtrueに変更します。モデルをボタンのng-disabled属性にバインドします。

22

あなたは間違いなく関数の代わりに式を使用できます。しかし、配列がundefinedかどうかを確認することができます。

<button ng-disabled="model.questions != undefined && model.questions.length > 0"></button> 
2

私は仕事への答えを@zsongすることができませんでしたし、私は配列の長さを返すように関数を作成したくなかったので、私はそれがArray.lengthとを返された別のスコープの変数を作成することにより、作業ました。私は、何ができる

$scope.modelQuestionsLength = $scope.model.questions.length; 

誰にも問題を抱えている場合ので、これは私のために働いていた私は、仕事に未定義の方法を得ることができませんでし

<button ng-disabled="modelQuestionsLength > 0"></button> 
0

<input ng-disabled="fieldsPermittedForEdit.indexOf('postDate') < 0"> 

をでこの例ではpostDatefieldsPermittedForEdit配列に存在しない限り、フィールドを無効にしています。

関連する問題