ng-show不能基于AngularJs版本工作

时间:2016-01-06 06:38:29

标签: angularjs angularjs-directive

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

请查看以下链接 https://code.angularjs.org/1.3.15/angular.js

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;
}]);

1 个答案:

答案 0 :(得分:2)

这是因为版本 1.3.0-beta.14 中的$parse服务发生了重大变化:

  

核心:由于bdfc9c02,值'f','0','false','no','n','[]'是   不再被视为麻痹。现在只有JavaScript假值   被表达式解析器视为falsy;其中有六个:   false,null,undefined,NaN,0和“”。

使用布尔值代替字符串:

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