【问题标题】:Enabling/ disabling button base on values of a property根据属性值启用/禁用按钮
【发布时间】:2016-05-27 14:55:43
【问题描述】:

我只想在登录用户的 sendSMS 属性值为 true 时才显示按钮。我应该在 html 的 ng-show 中放置什么来做到这一点?此外,我不太确定我是否正确放置了该属性的值。我创建了一个以 User 作为基本模型的 Viewer 模型,并添加了一个名为 sendSMS 的属性,以便我可以使用此属性来启用/禁用按钮。

create-sample-model.js

    var async = require('async');
module.exports = function(app) {
  //data sources
  var db = app.dataSources.db;
  //create all models
  async.parallel({
    viewers: async.apply(createViewers),
  }, function(err, results) {
    if (err) throw err;
  });
  //create reviewers
  function createViewers(cb) {
    db.automigrate('Viewer', function(err) {
      if (err) return cb(err);
      var Viewer = app.models.Viewer;
      Viewer.create([
        {email: 'example01@gmail.com', password: 'example123', sendSMS: 'false'},
        {email: 'example02@gmail.com', password: 'User01', sendSMS: 'true'}
      ], cb);
    });
  }
};

auth.js

angular
  .module('app')
  .factory('AuthService', ['Viewer', '$q', '$rootScope', function(Viewer, $q,
      $rootScope) {
    function login(email, password, sendSMS) {
      return Viewer
        .login({email: email, password: password, sendSMS: sendSMS})
        .$promise
        .then(function(response) {
          $rootScope.currentUser = {
            id: response.user.id,
            tokenId: response.id,
            email: email
          };
        });
    }
    function logout() {
      return Viewer
       .logout()
       .$promise
       .then(function() {
         $rootScope.currentUser = null;
       });
    }

    function register(email, password, sendSMS) {
      return Viewer
        .create({
         email: email,
         password: password,
         sendSMS: sendSMS
       })
       .$promise;
    }

    return {
      login: login,
      logout: logout,
      register: register
    };
  }]);
  • 这是位于服务文件夹中的身份验证

auth.js

    angular
  .module('app')
  .controller('AuthLoginController', ['$scope', 'AuthService', '$state',
      function($scope, AuthService, $state) {
    $scope.Viewer = {
      email: '',
      password: '',
      sendSMS: ''
    };
    $scope.login = function() {
      AuthService.login($scope.user.email, $scope.user.password)
        .then(function() {
          $state.go('report');
        });
    };
  }])
  .controller('AuthLogoutController', ['$scope', 'AuthService', '$state',
      function($scope, AuthService, $state) {
    AuthService.logout()
      .then(function() {
        $state.go('home');
      });
  }])
    .controller('SignUpController', ['$scope', 'AuthService', '$state',
      function($scope, AuthService, $state) {
    $scope.user = {
      email: '',
      password: ''
    };

    $scope.register = function() {
      AuthService.register($scope.user.email, $scope.user.password)
        .then(function() {
          $state.transitionTo('report');
        });
    };
  }]);
  • 这是位于控制器文件夹中的身份验证

report.html

<button type="button" ng-show="currentUser.Viewer.sendSMS" class="btn btn-primary btn-sm" data-toggle="modal" data-target="#myModal">
    Send sms for selected </button>

【问题讨论】:

  • 您是否在 report.html 中正确获取 'currentUser.Viewer.sendSMS' 值

标签: javascript angularjs node.js strongloop


【解决方案1】:

您可以在按钮上使用 ng-disabled 属性。 请参阅ng-disabled。可以根据 sendSMS 的范围值禁用按钮

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-13
    • 2011-09-22
    • 2019-02-20
    • 2019-02-18
    • 2023-04-11
    • 1970-01-01
    • 2018-05-31
    • 2011-11-19
    相关资源
    最近更新 更多