2013-01-09 38 views
6

मैं नमूना' ब्रीज 0.83.5 'सॉफ़्टवेयर स्थापित करने के साथ काम नहीं करता है IE8 के साथ काम नहीं करता।ब्रीज और कोणीय 'टूडू की ऐप से <a href="http://www.breezejs.com/documentation/download" rel="nofollow">http://www.breezejs.com/documentation/download</a></p> <p>कोणीय' टूडू 'नमूना आईई 8

मैंने अपने ब्रीज़ स्क्रिप्ट संदर्भ के ऊपर निम्न स्क्रिप्ट संदर्भ शामिल किए हैं।

कोई विचार क्यों यह काम नहीं करता है?

उत्तर

3

ब्रीज़ का कोणीय समर्थन 'बैकिंगस्टोर एडाप्टर' का उपयोग करता है जो बदले में ब्राउज़र द्वारा लागू ईएस 5 जावास्क्रिप्ट 'डिफिनप्रॉपर्टी' विधि पर निर्भर करता है। यह आईई 8 में लागू नहीं किया गया था, और दुर्भाग्यवश, एक शिम के उपयोग के माध्यम से पूरक नहीं किया जा सकता है।

यह एकमात्र एडाप्टर है जिसमें यह सीमा है, हवा नॉकआउट और रीढ़ की हड्डी एडाप्टर, दोनों ES5 shims के उपयोग के साथ IE8 के साथ काम करते हैं।

क्षमा करें!

+1

हाय जय, किसी भी विचार को भविष्य के संस्करणों में सही किया जाएगा? हमें IE8 का समर्थन करने की आवश्यकता है और कोणीय को IE8 में कोई समस्या नहीं चल रही है। धन्यवाद। – nihique

+2

हमने इसे देखा है लेकिन यह सुनिश्चित नहीं है कि हवा में आंतरिक परिवर्तन अधिसूचनाओं को कैसे कार्यान्वित किया जाए, जिसे हमें 'defineProperty' के बिना चाहिए। कोणीय की घड़ी की क्षमता हमारे लिए इसका उपयोग करने में बहुत देर हो चुकी है (मुझे लगता है)। लेकिन ... कृपया इस आइटम को हवा उपयोगकर्ता आवाज़ में जोड़ें (और इसके लिए वोट दें)। इसके अलावा हवा के बैकिंगस्टोर कार्यान्वयन पर नज़र डालें और यदि आप इसे लागू करने के लिए एक और दृष्टिकोण के साथ आ सकते हैं, तो कृपया मुझे बताएं। यह निराशाजनक है, मुझे पता है, क्योंकि कोणीय वास्तव में आधुनिक ब्राउज़रों पर हवा के साथ वास्तव में अच्छा काम करता है। –

+0

अरे जय ... ब्रीज़ के साथ अद्भुत काम! सॉफ्टवेयर का एक अद्भुत "टुकड़ा" क्या है। अमेरिका के लिए उपयोग करने के लिए इसे उपलब्ध कराने के लिए बधाई। आईई 8 समर्थन के बारे में: ऐसा लगता है कि एक फिक्स को यहां विलय कर दिया गया था: https://github.com/es-shims/es5-shim/issues/5 इस शिम फिक्स के साथ आपको लगता है कि यह एक साथ कोणीय और ब्रीज़ का उपयोग करने के लिए व्यवहार्य होगा आईई 8? –

1

यह ब्रीज न के भविष्य के संस्करणों में IE8 पर काम नहीं करेगा।

ऐसे IE9, IE10, और हाल के क्रोम, सफारी, फ़ायरफ़ॉक्स, और वेबकिट ब्राउज़रों के रूप में आधुनिक ब्राउज़रों में

तोदो-कोणीय रन। ब्रीज़ एंगुलरजेएस ऐप्स पुराने ब्राउज़र में चल रहा है जिसमें ECMAScript 5 संपत्ति गेटर्स और सेटर्स की कमी नहीं है।

+0

भविष्य के संस्करणों पर काम नहीं करने के बारे में आपका क्या मतलब है सुनिश्चित नहीं है। हम अभी नवीनतम फ़ायरफ़ॉक्स, क्रोम और आईई पर परीक्षण करते हैं। बैकिंगस्टोर एडाप्टर सभी तीनों पर ठीक काम करता है। क्या आपके पास ऐसा कोई मामला है जहां यह नहीं है? –

+1

अस्पष्टता के लिए खेद है। मेरा मतलब यह था कि यह आईई 8 पर भी काम नहीं करेगा क्योंकि परिभाषा के कारण ब्रीज़ के भविष्य के संस्करणों में भी आईई 8 में छेड़छाड़ नहीं की जा सकती है जैसा आपने पहले ही कहा था। मैं तदनुसार अपना जवाब अपडेट करूँगा। –

+0

सहमत, और thx –

0

ब्रीज़ होस्टिंग एमवीवीएम फ्रेमवर्क के व्यूमोडेल का उपयोग करता है। यह आमतौर पर एक अच्छा निर्णय है। इसके अतिरिक्त, इकाइयों पर ट्रैकिंग बदलना wind.js (इकाई फ्रेमवर्क के लिए समान) की मूलभूत अवधारणा है। परिवर्तनों को ट्रैक करना एक आसान काम है यदि एमवीवीएम फ्रेमवर्क वास्तविक गेटर और सेटर्स (उदा। नॉकआउट) के साथ ऑब्जर्वेबल्स का उपयोग करता है। अन्य हाथों पर AngularJS सादा जावास्क्रिप्ट वस्तुओं के साथ काम करता है। यह परिवर्तन ट्रैकिंग कठिनाई बनाता है। केवल दो विश्वसनीय तरीके ES5-Properties (सरल, लेकिन IE8 द्वारा समर्थित नहीं हैं) या $ पाचन चक्र में बहुत गहरे एकीकरण हैं। एयर-टीम ने पहली पसंद ली - आईई 8 का समर्थन करने वाली परियोजनाओं के लिए क्या करुणा है!

ठीक है, के समस्या के मूल कारण का विश्लेषण करते हैं: परिवर्तन पर नज़र रखने

तुम सच में उस सुविधा की जरूरत है? कम से कम हमारी परियोजना में हमने पढ़ने के लिए हवा और जेडी/ओडाटा के लिए और अधिक "आरामपूर्ण" दृष्टिकोण के लिए निर्णय लेने का फैसला किया। आप, उन उन्नत सुविधाओं की जरूरत नहीं है की तुलना में निम्न स्क्रिप्ट मुद्दे को हल करना चाहिए:

/******************************************************** 
* A replacement for the "backingStore" modelLibrary 
* 
* This is a bare version of the original backingStore, 
* without ANY change tracking - that's why it will work in IE8! 
* (Object.defineProperty not required any more) 
* 
* This adapter is a "drop in" replacement for the "backingStore" adapter in Breeze core. 
* It has the same adapter name so it will silently replace the original "backingStore" adapter 
* when you load this script AFTER the breeze library. 
* WARNING: For obvious reasons a lot of breeze magic will be lost! 
* 
* Author: Johannes Hoppe/haushoppe-its.de 
* 
* Copyright 2014 IdeaBlade, Inc. All Rights Reserved. 
* Use, reproduction, distribution, and modification of this code is subject to the terms and 
* conditions of the IdeaBlade Breeze license, available at http://www.breezejs.com/license 
******************************************************/ 

(function (definition, window) { 
    if (window.breeze) { 
     definition(window.breeze); 
    } else if (typeof require === "function" && typeof exports === "object" && typeof module === "object") { 
     // CommonJS or Node 
     var b = require('breeze'); 
     definition(b); 
    } else if (typeof define === "function" && define["amd"] && !window.breeze) { 
     // Requirejs/AMD 
     define(['breeze'], definition); 
    } else { 
     throw new Error("Can't find breeze"); 
    } 
}(function (breeze) { 
    "use strict"; 

    var core = breeze.core; 

    var ctor = function() { 
     this.name = "backingStore"; 
     this.A_BIG_FAT_WARNING = "This is a bare version of the backingStore! Change tracking won't work!"; 
    }; 

    var protoFn = ctor.prototype; 

    protoFn.initialize = function() { 

    }; 

    protoFn.getTrackablePropertyNames = function (entity) { 
     var names = []; 
     for (var p in entity) { 
      if (p === "entityType") continue; 
      if (p === "_$typeName") continue; 

      var val = entity[p]; 
      if (!core.isFunction(val)) { 
       names.push(p); 
      } 
     } 
     return names; 
    }; 

    protoFn.initializeEntityPrototype = function (proto) { 

     proto.getProperty = function (propertyName) { 
      return this[propertyName]; 
     }; 

     proto.setProperty = function (propertyName, value) { 
      this[propertyName] = value; 
      return this; 
     }; 
    }; 

    // This method is called when an EntityAspect is first created - this will occur as part of the entityType.createEntity call. 
    // which can be called either directly or via standard query materialization 
    // entity is either an entity or a complexObject 
    protoFn.startTracking = function (entity, proto) { 

     // assign default values to the entity 
     var stype = entity.entityType || entity.complexType; 
     stype.getProperties().forEach(function (prop) { 

      var propName = prop.name; 
      var val = entity[propName]; 

      if (prop.isDataProperty) { 
       if (prop.isComplexProperty) { 
        if (prop.isScalar) { 
         val = prop.dataType._createInstanceCore(entity, prop); 
        } else { 
         val = breeze.makeComplexArray([], entity, prop); 
        } 
       } else if (!prop.isScalar) { 
        val = breeze.makePrimitiveArray([], entity, prop); 
       } else if (val === undefined) { 
        val = prop.defaultValue; 
       } 

      } else if (prop.isNavigationProperty) { 
       if (val !== undefined) { 
        throw new Error("Cannot assign a navigation property in an entity ctor.: " + prop.Name); 
       } 
       if (prop.isScalar) { 
        // TODO: change this to nullstob later. 
        val = null; 
       } else { 
        val = breeze.makeRelationArray([], entity, prop); 
       } 
      } else { 
       throw new Error("unknown property: " + propName); 
      } 
      entity[propName] = val; 
     }); 
    }; 

    breeze.config.registerAdapter("modelLibrary", ctor); 
}, this)); 

डाउनलोड पर: https://gist.github.com/JohannesHoppe/72d7916aeb08897bd256

यह मूल backingStore के एक नंगे संस्करण है किसी भी परिवर्तन ट्रैकिंग के बिना - कि यह आईई 8 में क्यों काम करेगा! (Object.defineProperty को और आवश्यकता नहीं है) यह एडाप्टर ब्रीज़ कोर में "बैकिंगस्टोर" एडाप्टर के लिए "ड्रॉप इन" प्रतिस्थापन है। यह वही एडाप्टर नाम है, इसलिए जब आप वायु पुस्तकालय के बाद स्क्रिप्ट लोड करते हैं तो यह चुपचाप मूल "बैकिंगस्टोर" एडाप्टर को प्रतिस्थापित करेगा।
http://jsfiddle.net/Johannes_Hoppe/bcav9hzL/5/embedded/result/

चीयर्स:, यह प्रत्यक्ष लिंक का उपयोग करें
http://jsfiddle.net/Johannes_Hoppe/bcav9hzL/5/

JsFiddle IE8 का समर्थन नहीं करता:

यहाँ कार्यक्षमता सबूत के एक डेमो है!