הטקסט וגם הקלאס מוצגים ע"י פונקציה
<div claess={{getClass)()}}> {{getText()}} <\div>
הפונקציה {{getClass}} צריך לקבל את תוכן הטקסט, ה-textContent וחבל לי שיריץ שוב את הפונקציה getText
הדרך הנכונה היא לרשום להגדיר ng-madel
נכון?
הטקסט וגם הקלאס מוצגים ע"י פונקציה
<div claess={{getClass)()}}> {{getText()}} <\div>
הפונקציה {{getClass}} צריך לקבל את תוכן הטקסט, ה-textContent וחבל לי שיריץ שוב את הפונקציה getText
הדרך הנכונה היא לרשום להגדיר ng-madel
נכון?
@zvizvi אמר באנגולר: ריקון אוטו' של modal כתלות במשתנה אחר:
@אהרן אמר באנגולר: ריקון אוטו' של modal כתלות במשתנה אחר:
בנוסף: אני לא מבין איך אפשר בקונטרולר שבדירקטיב להשתתמש ב-this, הוא ישתמש בthis של הדירקטיב?!
לא, לדיירקטיב (או לקומפוננט) יש קונטרולר והthis מפנה אליו, אצלו גם שומרים את כל המשתנים.
דירקטיב הוא סה"כ אוסף ארוז של קונטרולר, סטייל וטמפלט html. והוא מכיל גם אפשרויות שונות - כמו API בכדי לתקשר איתו וממנו, ועוד.
לא הבנתי
בקונטרולר כותבים כך
app.controller('MainCtrl', function ($scope) {
var nv = this;
nv.allObj = [
[{
name: '',
lastName: 'aaa'
}
];
});
app.directive("elUpdated", function () {
var directive = {};
directive.controller = ['$scope', function ($scope) {
וכו'
return directive
גם פה אפשר להוסיף
var nv = this;
nv.serch = function() {}
וכו'
???
@dovid אמר באנגולר: ריקון אוטו' של modal כתלות במשתנה אחר:
זה כבר לא רלוונטי כי טעיתי בצרכים שלך. לא ידעתי שהעדכון מחליט על מה לחול לפי מי שריק, ולא ידעתי שבהכרח אחד חייב להיות מלא. כפי שזה כעת, בניתי לך דיירקטיב - מופיע לעיל - תוכל לעיין בו.
עשיתי שמה כמה שטיקים, אבל הרוב פשוט.
"תוכל לעיין בו"?? עיינתי בו לעומק.
לא מבין אבל, נכון שיש שינוים, לחלוטין לא מבין מה הם משנים לצורך\תועלת להשתמש בדירייקטיב?
בכלל, לא מבין מה הרווח בדירייקטיב הזה מעבר להוצאת הטמפלייט לקוד חיצוני, מה זה משנה אם שמים את הפונקציות מראש בקונטרולר או שמוסיפים אותם דרך הדירייקטיב (בהנחה שהם מתווספים לאותו קונטרולר)?
ואגב אשמח להבין מהו התחביר שהשתמש בו:
var = () ^ ()
@zvizvi אמר באנגולר: ריקון אוטו' של modal כתלות במשתנה אחר:
ng-repeat יוצר סקופ חדש עבור כל איטרציה.
מכיון שמומלץ מאוד לשמור דברים רק בקונטרולר ולא בסקופ, אז גם אין את הבעיה של סקופ חדש.
אוקי, ומדוע הסקופ החדש מכיר רק אוביקטים מהסקופ שמעליו ולא פרימיטיבים, בגלל שמשתנה פרמטיבי מכיל את המידע עצמו ומשנה האוביקט הוא רק רפרנס למקום האוביקט בזכרון? @magicode
@dovid אמר באנגולר: ריקון אוטו' של modal כתלות במשתנה אחר:
גישת Controller as?
נסינו יחד וזה לא עבד, אז צבי אמר לי שזה עובד רק עם דיירקטיב\קומפוננס
(אולי בגלל שרק אם שם הקונטרולר מכיל אות גדולה בתחילתו אנגולר יודע שזה קונסרקטור?)
עריכה: הצלחתי להצמיד הכל לקונטרולר ועובד מצוין (בלי דירקטיב).
בנוסף: אני לא מבין איך אפשר בקונטרולר שבדירקטיב להשתתמש ב-this, הוא ישתמש בthis של הדירקטיב?!
שאלה נוספת:
אם אכין דף נפרד עם אפשרויות נרחבות יותר לעריכה, להכניס א"ז לקנטרולר נפרד ולתקשר בינהם?
שוב, תודות מראש!
@dovid אמר באנגולר: ריקון אוטו' של modal כתלות במשתנה אחר:
directive עצמאי ואז תהנה גם מבידוד מלא של התנהגות התיבה ורק הערך החוזר יגיע לאלמנט
אשמח להרחבה, למה אתה מתכוון "תיבה" ומהו ה"אלמנט"?
@dovid אמר באנגולר: ריקון אוטו' של modal כתלות במשתנה אחר:
במקרה השני הוא גם לא עוזר כי מדובר במשתנה פרימיטיבי שאליו א"א לגשת בתוך ng-repeat.
למה? מה ההבדל?
@dovid אמר באנגולר: ריקון אוטו' של modal כתלות במשתנה אחר:
לי עובד בלי ה$parent
וואו, מוזר'! לא מצליח לשחזר, אבל בצהרים זה עבד לי בדיוק כמו בתשובה כאן
https://github.com/angular/angular.js/issues/6038
ולמה בדוגמא הזו parent לא עוזר?
https://plnkr.co/edit/aAHaSEuxQvnTUrsIK0eU?p=preview
היו 2 נושאים עיקריים שהתקשיתי
$scope.editName.current = null;
תפטור אותנו מהשורה:
$scope.editName.theNameToAdd = null
כי האלמנט נמחק וממילא אין למודל לאן להתחבר. זו שטות מוחלטת, בפרט אם המודל יהיה משויך לאלמנטים נוספים שלא ימחקו.
ng-model="editName.theNameToAdd"
והסיבה היא כיון שזה בתוך אלמנט בן עם סקופ חדש, אלא צ"ל:
ng-model="$parent.editName.theNameToAdd"
עכשיו אני חושב שהכל עובד כמצופה
אני שואל על הקוד והתכנון בכלל
ועל דרייקטיב.
ערכתי את הדוגמא שלך
https://plnkr.co/edit/yOPo7mDbOx4wiXhuSABX?p=preview
מקווה שעכשיו הכל מובן.
זה כתוב ומתוכנן נכון?
אני רוצה ללמוד על דייריקטיב
אם אפשר להכין משהו בסיסי מהקוד הנוכחי ובא לך לעשות א"ז, אשמח מאוד.
@אהרן אמר באנגולר: ריקון אוטו' של modal כתלות במשתנה אחר:
@אהרן אמר באנגולר: ריקון אוטו' של modal כתלות במשתנה אחר:
@אהרן אמר באנגולר: ריקון אוטו' של modal כתלות במשתנה אחר:
נראה שפה התשובה
אשמח להסבר.הפתרון הזה אכן פתר את הבעיה.
השאלה אם יש חסרונות בng-show לעומת ng-if
מתוכננים אלפים רבים של אלמנטים.הפתרון הזה = להשתמש ב ng-show במקום ng-if.
אשמח להסבר לנאמר כאן בנידון
המשתנה שנוצר ע"י ng-init חייב להיות אוביקט ולא פרמיטיב וכך גם המשתנה שמוצמד לסקופ ומשמש כמודל?
התשובה היא כן
כי?
רק הפניה לאוביקט מתנהג כמצביע?
@אהרן אמר באנגולר: ריקון אוטו' של modal כתלות במשתנה אחר:
@אהרן אמר באנגולר: ריקון אוטו' של modal כתלות במשתנה אחר:
נראה שפה התשובה
אשמח להסבר.הפתרון הזה אכן פתר את הבעיה.
השאלה אם יש חסרונות בng-show לעומת ng-if
מתוכננים אלפים רבים של אלמנטים.
הפתרון הזה = להשתמש ב ng-show במקום ng-if.
אשמח להסבר לנאמר כאן בנידון
המשתנה שנוצר ע"י ng-init חייב להיות אוביקט ולא פרמיטיב וכך גם המשתנה שמוצמד לסקופ ומשמש כמודל?
@אהרן אמר באנגולר: ריקון אוטו' של modal כתלות במשתנה אחר:
נראה שפה התשובה
אשמח להסבר.
הפתרון הזה אכן פתר את הבעיה.
השאלה אם יש חסרונות בng-show לעומת ng-if
מתוכננים אלפים רבים של אלמנטים.
@dovid אמר באנגולר: ריקון אוטו' של modal כתלות במשתנה אחר:
אתה גם מעיר שהוא לא עובד
המודל לא עובד, הקליק עובד טוב.
@dovid אמר באנגולר: ריקון אוטו' של modal כתלות במשתנה אחר:
הספק שלי
באיזה חלק?
@אהרן אמר באנגולר: ריקון אוטו' של modal כתלות במשתנה אחר:
ואגב, אתה רואה סיבה למה המודל לא מתעדכן בכתיבה לאינפוט?
נראה שפה התשובה
אשמח להסבר.
תודה!!
ואגב, אתה רואה סיבה למה המודל לא מתעדכן בכתיבה לאינפוט?
@dovid אמר באנגולר: ריקון אוטו' של modal כתלות במשתנה אחר:
הייתי שמח לקבל תמונה רחבה יותר
מצטער, באמת שנסיתי!
נניח יש אלמנטים ברצף, לא ניתנים לעריכה (type=text!) שמכילים כל אחד שם פרטי ושם משפחה.
אני רוצה להוסיף שבאלמנט שחסר שם המשפחה, קליק יפתח תחתיו אינפוט להשלמת שם המשפחה.
אז עשיתי כך (ממשיך עם הדוגמא מהאשכול הקודם):
<div ng-repeat="section in allObj">
<button ng-repeat="fullName in section" ng-click="changeName(fullName,section)">
{{fullName.name}}
**<input ng-if="addLastNmaeInput == fullName" ng-model="addLastNmaeText">{{addLastNmaeText}}</input>**
</button>
</div>
בפונקציה של הקליק הוספתי:
$scope.changeName = function(element, parent) {
element.name = 'aharon';
**$scope.addLastNmaeInput = element;**
};
(המוקף בכוכבים זה התוספת)
עשיתי א"ז בצורה כזו כי במהלך אחד אני מרויח כמה דברים חשובים
כעת, מקש אנטר או אסקייפ אמורים לסגור את האינפוט (למחוק אותו מהDOM)
כשהאינפוט יסגר, משתנים addLastNmaeInput addLastNmaeInput אמורים להתאפס.
אני יכול פשוט להוסיף א"ז לאירוע המקש
אבל שיכור מהאנגולר הייתי רוצה טיפול מלא בתלויות, כולל משתנים קשורים ולא רק של ה-DOM.
אגב, את הmodel אני צריך בשביל ששם המשפחה יכתב במקביל גם בתפריט עריכה עשיר יותר, במידה וירצו להמשיך ולערוך שם, אני אבל חושב שזה סתם נוח בשביל ללכוד את תוכן האינפוט, לא כן?
שמעתי שפונקציה וואצ' יקר במשאבים.
אפשרי? נכון? כדאי?
@dovid
אינפוט שמותנה ע"י ng-if="modalVar == true"
השימוש בו נדיר ולפרק זמן קצר (בסיום השימוש האלמנט נמחק ע"י שההתניה מחזירה false)
ואני רוצה לוודא שבסיום השימוש (modalVar == false) המודל שהחזיק את תוכן האינפוט יתאפס.
מקווה שברור
אם משתנה someVar == false אז modal = '""
אפשרי בצורה אוטומטית?
יצרתי מערך בקונטרולר
$scope.allObj = [
[
{ name: 'myName', lastName: 'aaa' },
{ name: 'myName', lastName: 'bbb' },
{ name: 'myName', lastName: 'ccc' }
],
[
{ name: 'myName', lastName: 'ddd' },
{ name: 'myName', lastName: 'eee' },
{ name: 'myName', lastName: 'fff' }
]
];
מזה יצרתי אלמנטים
<div ng-controller="myCtrl">
<div ng-repeat="section in allObj">
<button ng-repeat="fullNmae in section" ng-click="changeName( $parent.$index, $index )"</button>
</div>
</div>
וזו הפונקציה:
$scope.changeName = function(idx1, idx2) {
$scope.allObj[idx1][idx2].myName = 'aharon';
};
השאלה היא על הקטע הזה:
scope.allObj[idx1][idx2]
זו הדרך הנכונה?
זו הדרך היחידה או שיש משהו כמו this.name?
כל אלמנט נוצר ומשתמש במידע שהוצמד לאוביקט מתוך אוביקטים רבים במערך
איך אני ניגש לשנות את האוביקט הספציפי?
אני יכול ע"י $index למצוא את המקום שלו
יש איזה משתנה שמחזיק רפרנס אליו ישירות (למה מפריע לי להשתמש ב$index? לא יודע)?
@ארכיטקט אמר באיך מכריעים האם להשתמש בסוקט או בקריאות אג'קס מרובות?:
Fire Base
אשמח להרחבה
אני רואה שזה מגוון רחב של כלים.