LiveCycle中的JavaScript - 对象的存在

时间:2017-03-08 17:41:17

标签: javascript livecycle

JavaScript Geniuses,

所需的结果是“推荐”和“授权”,以显示是否选中了两个复选框中的任何一个。

/*For Checkbox1: Fund1 */
if (this.rawValue == "1") {
  this.resolveNode("fund1").presence = "visible";
  this.resolveNode("recommend").presence = "visible";
  this.resolveNode("authorization").presence = "visible";
} else {
  this.resolveNode("fund1").presence = "hidden";
  this.resolveNode("recommend").presence = "hidden";
  this.resolveNode("authorization").presence = "hidden";
}

/*For Checkbox2 - Fund2: */
if (this.rawValue == "1") {
  this.resolveNode("fund2").presence = "visible";
  this.resolveNode("recommend").presence = "visible";
  this.resolveNode("authorization").presence = "visible";
} else {
  this.resolveNode("fund2").presence = "hidden";
  this.resolveNode("recommend").presence = "hidden";
  this.resolveNode("authorization").presence = "hidden";
}

如果选中一个复选框,则可以看到所需的“推荐”和“授权”对象。如果我同时选中这两个复选框,则取消选中一个复选框,隐藏“推荐”和“授权”对象。其他基金的复选框对表单有不同的批准要求。

导致问题的原因是什么?什么能解决它?什么是编写代码的更简洁的方法?所有指导都表示赞赏。

1 个答案:

答案 0 :(得分:0)

  1. 创建脚本对象以存储所有的util函数并为其指定一个简洁的名称。
  2. 在那里你应该创建使对象可见和不可见的功能。这不是强制性的,但是这样的结构会减少愚蠢错误的数量(比如在“可见”这个词中遗漏一些字母等):

    public class DownloadImage extends AsyncTask<String, Void, Bitmap> {
        CircleImageView bmImage;
    
        public DownloadImage(ImageView bmImage) {
            this.bmImage = (CircleImageView) bmImage;
        }
    
        protected Bitmap doInBackground(String... urls) {
            String urldisplay = urls[0];
            Bitmap mIcon11 = null;
            try {
                InputStream in = new java.net.URL(urldisplay).openStream();
                mIcon11 = BitmapFactory.decodeStream(in);
            } catch (Exception e) {
                Log.d("Error", e.getStackTrace().toString());
    
            }
            return mIcon11;
        }
    
        protected void onPostExecute(Bitmap result) {
            bmImage.setImageBitmap(result);
        }
    }
    
  3. 创建用于为授权和推荐对象设置所需状态的功能:

    new DownloadImage(imgUserProfile).execute(userProfileUrl);
    
  4. 在CheckBox1调用方法的click事件中设置auth。和rec。州。并且还为Fund1对象设置可见性。

    function setVisible(field){
        if (field === null) {
            //do what ever you want with an error
        }
        if (field === undefined) {
            //do what ever you want with an error
        }
        if (field instanceof Array) {
            //do what ever you want with an error
        }
        field.presence = "visible";
    }
    
    function setInvisible(field){
       if (field === null) {
            //do what ever you want with an error
        }
        if (field === undefined) {
            //do what ever you want with an error
        }
        if (field instanceof Array) {
            //do what ever you want with an error
        } 
        field.presence = "invisible";
    }
    
  5. 在CheckBox2调用方法的click事件中设置auth。和rec。州。并且还为Fund2对象设置可见性。

    function setStateAuth(){
      if(Page1.CheckBox1.rawValue == "1" || Page1.CheckBox2.rawValue == "1"){
        setVisible(Page1.Authorization);
      }else{
        setInvisible(Page1.Authorization);
      }
    }
    
    function setStateRec(){
      if(Page1.CheckBox1.rawValue == "1" || Page1.CheckBox2.rawValue == "1"){
        setVisible(Page1.Recommend);
      }else{
        setInvisible(Page1.Recommend);
      }
    }
    
  6. 请注意,建议不要使用“resolveNode”方法处理对象(由于性能问题)。因此,如果您有一个简洁而非动态的页面数量,那么最好将其命名为all并使用它们的名称引用它们。就像在样本中完成一样,我已经

  7. Here you can get a sample PDF