使用AngularJs在自定义指令中显示不工作

使用AngularJs在自定义指令中显示不工作,angularjs,angularjs-directive,Angularjs,Angularjs Directive,这里我的问题是,我想基于json参数显示和隐藏textbox, 这里我得到的是json值(true,false),但是绑定值时ng show不起作用 谢谢你的帮助 var app = angular.module('testApp', []); app.directive('telBasictext1', ['$http', 'telngshowservice', function($http, telngshowservice) { return { re

这里我的问题是,我想基于json参数显示和隐藏textbox, 这里我得到的是json值(true,false),但是绑定值时ng show不起作用 谢谢你的帮助

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;
    }]);
var-app=angular.module('testApp',[]);
app.directive('telBasictext1',['$http','telngshowservice',function($http,telngshowservice){
返回{
限制:“AEC”,
要求:'ngModel',
范围:{
ngModel:“=”,
placeHold:“@”,
checkId:“@”,
类名:“@”,
ngmaxLength:“@”,
ngminLength:“@”,
lblvalue:“@”,
textboxSize:“@”,
lblSize:“@”,
验证:“@”,
ngShow:“@”,
textboxtype:“@”,
getString:“@”,
职位:“@”,
标签位置:'@',
textboxPosition:“@”,
可以显示:“@”,
showorhide:“@”,
},
模板:“”+
“测试”+
' ',
链接:功能(范围、IELENT、iAttrs、ngModelController){
var ngshow=iAttrs.canShow;
var ngsplitValues=ngshow.split(“,”);
var nglanguage=ngsplitValues[0];//语言EN或Fr
var nglabelName=ngsplitValues[1];//标签名称
var ngmoduleName=ngsplitValues[2];//模块名称(全局或本地)
telngshowservice.getdata(ngmoduleName).success(函数(数据){
scope.showorhide=数据[nglabelName];
console.log(scope.showorhide)
})
}
};
}]);
app.factory('telngshowservice',['$http',函数($http){
var dataFactory={};
var lang=window.localStorage.language;
dataFactory.getdata=函数(moduleName){
if(moduleName=='common'){
返回$http.get(labeli18nPath+'/translation_'+lang+'.json');
}否则{
返回$http.get('OPlayout.json');
}
};
返回数据工厂;
}]);
请检查下面的Url


因为您使用文本绑定(@)在隔离的作用域中定义了
hideorshow
。注意:使用文本绑定时,双向数据绑定不起作用:)

删除此选项,它就会正常工作(或使用另一个范围变量)


工作示例:

请提供一些示例以帮助您请检查此链接寻求调试帮助的问题(“为什么此代码不工作?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。谢谢Lamisti,使用FineLamisti,但它在angularJs版本1.35()中不起作用。请删除你的否决票,并在不起作用的地方提供一个plunker,因为它对我起作用,只需更改angularJs这个(()版本)我得到了答案,原因是{“psearchcpatient”:false,“pAddressNo”:true,“pBuilding”:true}我现在用布尔值代替字符串,很好用,谢谢