3

次のようなチェックボックスのあるフォームがあります。

<input type="checkbox" name="publish" id="publish" ng-model="data.publish" ng-true-value="Yes" ng-false-value="No"/>

ここで、チェックボックスをクリックしなくても、初期値'No'をモデルにバインドしたいと思います (チェックされていないため)。コントローラーでモデル値を手動で設定するか、を使用する以外に方法はありngInitますか?

私のスクリプトはさまざまな形式で動作するはずなので、モデル変数を手動で設定することはできません。そして、そのngInit方法はかなり洗練されていないようです。

4

1 に答える 1

0

おそらく、次のように機能するディレクティブです。

<input type="checkbox" ng-model="..." init-cb ... />

次のコードでそれを行う必要があります。

m.directive("initCb", function() {
    return {
        require: ["ngModel"],
        scope: false,
        link: function(scope, element, attrs, controllers) {
            var ngModel = controllers[0],
            if( element[0].checked ) {
                ngModel.$setViewValue(attrs.ngTrueValue || true);
            }
            else {
                ngModel.$setViewValue(attrs.ngFalseValue || false);
            }
        }
    };
});
于 2013-09-17T13:36:14.500 に答える