it-swarm.dev

كيف يمكنني تعيين معلمة استعلام في AngularJS دون القيام بمسار؟

يسمح تطبيقي Angular للمستخدم بتحميل عنصر ، وعندما يحدث ذلك ، أرغب في تعيين سلسلة استعلام تحتوي على معرف العنصر بحيث إذا قام المستخدم بتحديث الصفحة (أو أراد الارتباط بها) ) ، تم بالفعل تعيين عنوان URL (يوجد كود موجود بالفعل يقوم بتحميل العنصر إذا كان معرف الهوية موجودًا في $ routeParams).

كيف يمكنني تعيين معلمة الاستعلام هذه دون التسبب في مسار؟ هناك أشياء أخرى على الصفحة ستتم إعادة تعيينها (بما في ذلك مكون إضافي سيتعين عليه إعادة تحميل جميع بياناته) في حالة حدوث مسار ، لذلك من المهم أن تتغير معلمة الاستعلام فقط.

باختصار ، عندما أقوم بتحميل العنصر 123 ، كل ما أريد أن يحدث هو أن عنوان URL يتغير من:

www.myurl.com/#/Items

إلى:

www.myurl.com/#/Items؟id=123

دون أي توجيه يحدث.

ما هي الطريقة الأفضل لعمل هذا؟

70
Mike Pateras

في الخاص بك $ routeProvider مجموعة التكوين reloadOnSearch إلى false:

$routeProvider
  .when('/items', {
    controller: 'ItemsCtrl',
    templateUrl: '/templates/items',
    reloadOnSearch: false
  },
  ...
);

وفي وحدة التحكم الخاصة بك استخدم $location.search() لتعيين id param:

$location.search('id', 123);
163
Stewie