เอาล่ะคิดว่าเข้าใจแล้ว ...
พื้นหลังเล็ก ๆ น้อย ๆ ก่อน: เหตุผลที่ฉันต้องการสิ่งนี้คือการติด Angular ไว้ด้านบนของ Node Express และให้ Jade ประมวลผลบางส่วนให้ฉัน
นี่คือสิ่งที่ต้องทำ ... (ดื่มเบียร์และใช้เวลา 20+ ชั่วโมงก่อน !!!) ...
เมื่อคุณตั้งค่าโมดูลของคุณให้บันทึก$routeProvider
ทั่วโลก:
var routeProvider
, app = angular.module('Isomorph', ['ngResource']).config(function($routeProvider){
routeProvider = $routeProvider;
$routeProvider
.when('/', {templateUrl: '/login', controller: 'AppCtrl'})
.when('/home', {templateUrl: '/', controller: 'AppCtrl'})
.when('/login', {templateUrl: '/login', controller: 'AppCtrl'})
.when('/SAMPLE', {templateUrl: '/SAMPLE', controller: 'SAMPLECtrl'})
.when('/map', {templateUrl: '/map', controller: 'MapCtrl'})
.when('/chat', {templateUrl: '/chat', controller: 'ChatCtrl'})
.when('/blog', {templateUrl: '/blog', controller: 'BlogCtrl'})
.when('/files', {templateUrl: '/files', controller: 'FilesCtrl'})
.when('/tasks', {templateUrl: '/tasks', controller: 'TasksCtrl'})
.when('/tasks/new', {templateUrl: '/tasks/new', controller: 'NewTaskCtrl'})
.when('/tasks/:id', {templateUrl: '/tasks', controller: 'ViewTaskCtrl'})
.when('/tasks/:id/edit', {templateUrl: '/tasks', controller: 'EditTaskCtrl'})
.when('/tasks/:id/delete', {templateUrl: '/tasks', controller: 'DeleteTaskCtrl'})
.otherwise({redirectTo: '/login'});
});
...
app.controller('EditTaskCtrl', function($scope, $routeParams, $location, $http){
var idParam = $routeParams.id;
routeProvider.when('/tasks/:id/edit/', {templateUrl: '/tasks/' + idParam + '/edit'});
$location.path('/tasks/' + idParam + '/edit/');
});
...
นั่นอาจเป็นข้อมูลที่มากกว่าที่ต้องการ ...
โดยพื้นฐานแล้วคุณจะต้องจัดเก็บ$routeProvider
ตัวแปรของโมดูลไว้ทั่วโลกเช่นrouteProvider
เพื่อให้ตัวควบคุมของคุณสามารถเข้าถึงได้
จากนั้นคุณสามารถใช้routeProvider
และสร้างเส้นทางใหม่ (คุณไม่สามารถ 'รีเซ็ตเส้นทาง' / 'ประกาศใหม่' ได้คุณต้องสร้างเส้นทางใหม่) ฉันเพิ่งเพิ่มเครื่องหมายทับ (/) ในตอนท้ายเพื่อให้เป็นความหมาย เป็นครั้งแรก
จากนั้น (ภายในคอนโทรลเลอร์ของคุณ) ตั้งค่าtemplateUrl
เป็นมุมมองที่คุณต้องการตี
นำcontroller
คุณสมบัติของ.when()
วัตถุออกไปเกรงว่าคุณจะได้รับลูปคำขอที่ไม่มีที่สิ้นสุด
และสุดท้าย (ยังอยู่ในตัวควบคุม) ใช้$location.path()
เพื่อเปลี่ยนเส้นทางไปยังเส้นทางที่เพิ่งสร้างขึ้น
หากคุณสนใจในวิธีการที่จะตบแอปเชิงมุมบนแอป Express คุณสามารถแยก repo ของฉันที่นี่: https://github.com/cScarlson/isomorph
และวิธีนี้ยังช่วยให้คุณเพื่อให้ AngularJS ข้อมูลแบบสองทิศทางการรวมในกรณีที่คุณต้องการที่จะผูก HTML ของคุณไปยังฐานข้อมูลของคุณโดยใช้ WebSockets {{model.param}}
ฉะนั้นโดยไม่ต้องวิธีนี้เชิงมุมข้อมูลผูกของคุณเพียงแค่จะออก
หากคุณโคลนสิ่งนี้ในเวลานี้คุณจะต้องมี mongoDB บนเครื่องของคุณเพื่อเรียกใช้งาน
หวังว่านี่จะช่วยแก้ปัญหานี้ได้!
โคดี้
อย่าดื่มน้ำของคุณ
config()
ผู้ให้บริการเท่านั้นจึงไม่ใช่อินสแตนซ์บริการจริงเช่น$routePrams
.