2014-03-27 41 views
1

我有一個AngularJS應用,在通過「grunt serve」服務時在瀏覽器中正常工作。但是,試圖以Chrome擴展程序運行應用程序失敗。初始頁面('/'路線)顯示,但是當我按下「/#/ products/add」鏈接時,出現'找不到網頁'的錯誤。AngularJS路由在Chrome擴展中不起作用

No webpage was found for the web address: chrome-extension://acekeiblhdhhbgoagmeegclohfncadjg/#/products/add 
Error code: ERR_FILE_NOT_FOUND 

爲什麼第一條路線有效,但第二條路線失敗?

我的清單目前是裸露的骨頭,但我已經嘗試過各種權限(但是根路由工作的事實使我認爲其他路由應該工作)。

{ 
    "manifest_version": 2, 

    "name": "My app", 
    "description": "Does stuff", 
    "version": "1.0", 

    "permissions": [ 
    "<all_urls>" 
    ], 
    "browser_action": { 
    "default_icon": "app/images/icon.png", 
    "default_popup": "app/index.html" 
    } 
} 

的app.js文件是這樣的:

'use strict'; 

angular.module('myApp', [ 
    'ngResource', 
    'ngSanitize', 
    'ngRoute', 
    'ngStorage' 
]) 
.config(function ($routeProvider) { 
    $routeProvider. 
    when('/products', { 
     templateUrl: 'views/product_pages/product_list.html', 
     controller: 'ProductListCtrl' 
    }). 
    when('/products/add', { 
     templateUrl: 'views/product_pages/product_add.html', 
     controller: 'ProductAddCtrl' 
    }). 
    when('/products/:productId', { 
     templateUrl: 'views/product_pages/product_edit.html', 
     controller: 'ProductEditCtrl' 
    }). 
    otherwise({ 
     redirectTo: '/products' 
    }); 
}) 
.run(function() { 
    // removed for brevity 
}); 

而該產品添加控制器內容如下:

.controller('ProductAddCtrl', ['$scope', '$location', 'productPageCollection', 
function ($scope, $location, productPageCollection) { 

    $scope.showError = function(ngModelController, error) { 
    return ngModelController.$error[error]; 
    }; 

    $scope.processForm = function() { 
    productPageCollection.add({ 'name' : $scope.product.name }); 
    $location.path('/products'); 
    }; 
}]) 

任何想法?

+0

你的鏈接應該指向'#/ products/add',而不是'/#/ products/add'。 – rsanchez

+0

感謝rsanchez,這工作 - 它讓我感到困惑,因爲鏈接工作時,不在擴展。如果您將其添加爲答案,我會接受它,謝謝。 – kmc

回答

3

您的鏈接應該指向#/products/add,而不是/#/products/add。第二個選項嘗試導航到您的擴展的根文件夾。