簡體   English   中英

如果某個值== anothervalue,則將ng-model分配給復選框

[英]Assign ng-model to checkbox if some value == anothervalue

我在Angular控制器中有一個User對象。 我還有一個Account對象數組,每個對象都有相應的ID。

在用戶中我有一個字段“default_account”,我想在其中放置默認帳戶的ID。 因此,用戶可以擁有大量帳戶,但其中只有一個可以是默認帳戶。 當我轉到帳戶選項時,我有一個復選框,負責設置/取消設置默認帳戶。

現在我想根據用戶的默認設置打開/關閉復選框。 我還需要在復選框更改時分別更改User對象中的default_account字段。 我非常困惑我如何做到這一點。

任何建議表示贊賞!

非常近似(沒有發短信):

HTML:

       <div ng-repeat="account in accounts">
           <input type="checkbox" ng-checked="account == user.default_acount" 
                  ng-click="SelectAssDefault(account )" />
        </div>

JS:

function MyCtrl($scope) {

  $scope.user = { name: 'user', default_acount: null};
  $scope.accounts = [{  }, {  }, ...];

  $scope.SelectAssDefault = function (account) {
      $scope.user.default_acount = account;
  };
}

編輯:一個工作示例: http//jsfiddle.net/ev62U/120/

如果要根據變量將復選框設置為true,可以在輸入標記內設置ng-checked="variable"

如果變量為true ,則將檢查該框。 如果它是false它就不會。 或者,表達式也將起作用,例如ng-checked="1===1"將評估為true。

如果要根據用戶單擊復選框更改其他內容,請在輸入標記內設置ng-click="someCtrlFunction()" 這將調用控制器中的函數。 您可以從控制器中查找復選框的值(如果已綁定)。

這是一個小提琴: http//jsfiddle.net/E8LBV/10/ ,這里是代碼:

HTML

<div ng-app="App">
<div ng-controller="AppCtrl">
    <ul>
        <li ng-repeat="user in users">{{user.name}}
            <ul>
                <li ng-repeat="account in user.accounts">
                    <input type="checkbox" ng-model="checked" ng-checked="account == user.default" ng-click="changeDefault(user.id,account,checked)">{{account}}</input>
                </li>
                <ul/>
        </li>
    </ul>
</div>
</div>

JS

            var app = angular.module('App', []);

            app.service('Users', function () {
                var Users = {};

                Users.data = [{
                    'id': 1,
                        'name': 'jon',
                        'default': null
                }, {
                    'id': 2,
                        'name': 'pete',
                        'default': null
                }];

                return Users;

            });

            app.service('Accounts', function () {
                var Accounts = {};

                Accounts.data = [{
                    'user': 1,
                        'ac': 123456
                }, {
                    'user': 2,
                        'ac': 456832
                }, {
                    'user': 2,
                        'ac': 345632
                }, {
                    'user': 1,
                        'ac': 677456
                }];

                return Accounts;

            });

            app.controller('AppCtrl', function ($scope, Users, Accounts) {
                $scope.users = Users.data;

                //attach accounts to user                
                for (i = 0; i < $scope.users.length; i++) {
                    $scope.users[i].accounts = [];
                    for (ii = 0; ii < Accounts.data.length; ii++) {
                        if (Accounts.data[ii].user == $scope.users[i].id) {
                            $scope.users[i].accounts.push(Accounts.data[ii].ac);
                        }
                    }
                }

                    //function to change the default account for the user
                    $scope.changeDefault = function (id, account, checked) {
                        if (!checked) {
                            return;
                        }
                        for (i = 0; i < $scope.users.length; i++) {
                            if ($scope.users[i].id == id) {
                                $scope.users[i].
                                default = account;
                            }
                        }
                    }    
            });

這是我的解決方案,對我來說非常有用!

<tbody ng-repeat="account in accounts">
          <tr>
            <td ><a ng-click="getloandetails(account.idAccount)">{{account.accountName}}</a></td>
            <td>$ {{account.currentBalance}}</td>
          </tr>
</tbody>

在Angular方面,只需這樣做:

$scope.getloandetails = function(accountId) {
    alert('Gettring details for the accountId: ' + accountId);
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM