【问题标题】:ng-show not working based on the AngularJs versionng-show 不能基于 AngularJs 版本工作
【发布时间】:2016-04-10 04:29:47
【问题描述】:

这里我创建了自定义指令,用于显示和隐藏 json 数据中的特定字段,这里我的问题是角度版本,在低版本中它可以工作 (https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js),但高版本它不支持 (https://code.angularjs.org/1.3.15/angular.js)

请查看以下链接 http://plnkr.co/edit/h3MrWQjopbqzYa0Y5pOT?p=preview

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

app.directive('telBasictext1', ['$http', 'telngshowservice', function($http, telngshowservice) {
  return {
    restrict: 'AEC',
    require: 'ngModel',
    scope: {
      ngModel: '=',
      placeHold: '@',
      checkId: '@',
      className: '@',
      ngmaxLength: '@',
      ngminLength: '@',
      lblvalue: '@',
      textboxSize: '@',
      lblSize: '@',
      validate: '@',
      ngShow: '@',
      textboxtype: '@',
      getString: '@',
      position: '@',
      labelPosition: '@',
      textboxPosition: '@',
      canShow: '@',
      showorhide: '@',
    },
    template: '<div   id="{{ checkId }}" class="form-group" ng-show="true"  > ' +
      '<label size="lblSize"  class="col-sm-{{ labelPosition }} control-label" id="textboxchanges">   Test </label>' +
      '<div class="col-sm-{{ textboxPosition }}"> <input type="{{ textboxtype }}" ng-model="ngModel" placeholder="{{ placeHold }}"  id="{{checkId}}"   class="{{className}}"  minlength="{{ ngminLength }}"  maxlength="{{ ngmaxLength }}"  size="{{ textboxSize }}"           ng-required="{{ validate }}" ></div></div>',

    link: function(scope, iElement, iAttrs, ngModelController) {



      var ngshow = iAttrs.canShow;
      var ngsplitValues = ngshow.split(",");
      var nglanguage = ngsplitValues[0]; // Language EN or Fr
      var nglabelName = ngsplitValues[1]; // Label Name
      var ngmoduleName = ngsplitValues[2]; // Module Name (global or local)

      telngshowservice.getdata(ngmoduleName).success(function(data) {

        scope.showorhide = data[nglabelName];
        console.log(scope.showorhide)


      })


    }
  };
}]);



app.factory('telngshowservice', ['$http', function($http) {
  var dataFactory = {};
  var lang = window.localStorage.language;
  dataFactory.getdata = function(moduleName) {

    if (moduleName == 'common') {

      return $http.get(labeli18nPath + '/translation_' + lang + '.json');
    } else {


      return $http.get('OPlayout.json');
    }
  };
  return dataFactory;
}]);

【问题讨论】:

标签: angularjs angularjs-directive


【解决方案1】:

这是由于版本 1.3.0-beta.14$parse 服务的重大更改:

core:由于 bdfc9c02,值 'f'、'0'、'false'、'no'、'n'、'[]' 是 不再被视为虚假。现在只有 JavaScript 虚假值 被表达式解析器视为虚假;其中有六个: false、null、未定义、NaN、0 和 ""。

使用布尔值代替字符串:

{
    "pSearchPatient": false,
    "pAddressNo" : true,
    "pBuilding": true
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-22
    • 1970-01-01
    • 1970-01-01
    • 2015-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-24
    相关资源
    最近更新 更多