【问题标题】:AngularJS and Angular-UI Bootstrap tabs scopeAngularJS 和 Angular-UI 引导选项卡范围
【发布时间】:2017-12-14 23:56:31
【问题描述】:

我正在使用 AngularJS 和 Angular-UI 引导选项卡。这是我的控制器:

app.controller("SettingsCtrl", ['$scope','SettingsFactory','$stateParams',  function($scope,SettingsFactory,$stateParams){


  $scope.navType = 'pills';

  $scope.saveLanguage = function()
  {   
    console.log($scope.test.vari); // loged undefined
  }

}]);

我的看法

<div class="row clearfix">

  <tabset>
    <tab heading="Jezik">

     <form role="form" name="test">

        <div class="form-group">
            <label for="lang">Izaberite jezik</label>
            <select class="form-control" ng-model="vari">
              <option>Hrvatski</option>
              <option>Srpski</option>
              <option>Bosanski</option>
              <option>Engleski jezik</option>
              <option>Njemački jezik</option>
            </select>
        </div>


        <button type="submit" class="btn btn-default"  ng-click="saveLanguage()">Save</button>
      </form>

    </tab>

</div>

有人可以帮我看看为什么在我使用 Angular-UI 引导选项卡时未定义日志。它是否创建了自己的范围。如何获取模型值?

【问题讨论】:

  • 我试过了。不幸的是,它不起作用。

标签: angularjs tabs scope angular-ui-bootstrap


【解决方案1】:

这段代码解决了我的问题(从表单中删除了名称属性,添加了 ng-model="test.vari",并在我的控制器中添加了 $scope.test= {})

    <tabset>
    <tab heading="Jezik">

     <form role="form">

        <div class="form-group">
            <label for="lang">Izaberite jezik</label>
            <select class="form-control" ng-model="test.vari">
              <option>Hrvatski</option>
              <option>Srpski</option>
              <option>Bosanski</option>
              <option>Engleski jezik</option>
              <option>Njemački jezik</option>
            </select>
        </div>


        <button type="submit" class="btn btn-default"  ng-click="saveLanguage()">Spremi Jezik</button>
      </form>


    </tab>
</div>





app.controller("SettingsCtrl", ['$scope','SettingsFactory','$stateParams',  function($scope,SettingsFactory,$stateParams){

      $scope.navType = 'pills';


      $scope.test= {};

      $scope.saveLanguage = function()
      {
          console.log($scope.test.vari);

        // SettingsFactory.update({ id:$stateParams.user_id }, $scope.language);
      }
}]);

【讨论】:

    【解决方案2】:

    该选项卡创建子作用域,因此我们需要将其绑定到一个表达式,该表达式计算为父作用域中的模型。

    为此,模型必须像这样使用.

    ng-model='object.variable'

    我们必须在控制器的顶部声明对象:

    $scope.object = {};
    

    例子:

    angular.module('test', ['ui.bootstrap']);
    
    var DemoCtrl = function ($scope) {
    
      $scope.obj = {text: ''};
    
      $scope.show = function() {
        alert('You typed: ' + $scope.obj.text)
      }
    
    };
    <!doctype html>
    <html ng-app="test">
      <head>
        <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
        <script src="http://angular-ui.github.io/bootstrap/ui-bootstrap-tpls-0.14.0.js"></script>
        <link href="//netdna.bootstrapcdn.com/bootstrap/3.0.3/css/bootstrap.min.css" rel="stylesheet">
      </head>
      <body>
    
    <div ng-controller="DemoCtrl">
      Value outside the tabs: {{obj.text}}
      <uib-tabset>
        <uib-tab heading="Tab 1">
          <input ng-model="obj.text">
          <button ng-click="show()">Show</button>
        </tab>
      </tabset>
    </div>
    
    </body>
    </html>

    【讨论】:

      猜你喜欢
      • 2014-02-11
      • 2015-11-21
      • 1970-01-01
      • 2014-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-10
      相关资源
      最近更新 更多