Angularjs ng-include不包括任何视图

时间:2013-11-17 00:30:57

标签: javascript angularjs

我一直在努力设置我的ng-include如下:

<!DOCTYPE html>
<html ng-app>
<head>
  <title>Demo</title>
  <script type="text/javascript" src="js/lib/angular.min.js"></script>
  <script type="text/javascript" src="js/lib/angular-resource.min.js"></script>
  <script type="text/javascript" src="js/controllers/app.js"></script>
  <link rel="stylesheet" type="text/css" href="css/bootstrap.min.css"/>
</head>
<body>
  <h1>Airports</h1>
  <div ng-controller="AppCtrl">
    <div>
      <div>
        <ul>
          <li ng-repeat="airport in airports">
            <a href="" ng-click="setAirport(airport.code)">
              {{airport.code}} - {{airport.name}}
            </a> -
            <a href="" ng-click="editAirport(airport.code)">
              Editar
            </a>
          </li>
        </ul>
        <p ng-show="currentAirport">Current airpot: {{currentAirport.name}}</p>
      </div>
      <!--el ng include le indica que puede incluir un scope (.html)-->
      <div ng-include src="formURL"></div>
    </div>
  </div>
</body>
</html>

我的JS脚本(app.js):

function AppCtrl ($scope){
    $scope.airports={
        "STL":{
            "code":"STL",
            "name":"Lambert-St Airport",
            "city":"san louis",
            "destinations": [
                "LAX",
                "MKE"
            ]
        }
    };
    $scope.formURL= 'partials/form.html';
    $scope.currentAirport = null;

    $scope.setAirport = function (code) {
        $scope.currentAirport = $scope.airports[code];
    };

    $scope.editAirport = function (code) {
        $scope.editing = $scope.airports[code];
    };
}

最后是form.html

<div ng-show="editing">
    <h3>Edit Airport</h3>
    <input ng-model="editing.name" value="" class="input-xlarge"/>
</div>

我试图显示表单,更改网址,编写完整的网址,但似乎无法正常工作。虽然当我点击机场时,页面显示正确。

如果有人能指出我正确的方向,那将是伟大的。对于这篇巨大的帖子感到抱歉,它需要一些解释才能使它变得连贯。希望这是有道理的。感谢。

My directory:

exampleAngular
   |_css
   |_img
   |_js
   |_controllers
        |_app.js
   |_lib
        |_angular.min.js
        |_angular-resource.min.js
   |_partials
        |_form.html
        |_airport.html
   |_index.html 

2 个答案:

答案 0 :(得分:2)

Andyrooger提供的弹药在没有修改的情况下工作正常,但是你应该改变一些东西。

1)当使用指令作为属性时,使用ng-include时没有src,因此它应该是ng-include="formUrl"

2)使用对象属性而不是ng-show

上的整个对象

将HTML更改为,

<div ng-show="editing.airport">
<h3>Edit Airport</h3>
<input ng-model="editing.name" value="" class="input-xlarge"/>
</div>

还要注意范围继承,更改Controller

$scope.editing = {};
// Inside function
$scope.editing.airport = $scope.airports[code]

答案 1 :(得分:1)

根据您的评论,您的formURL似乎不正确......

你在这一行设置

$scope.formURL= 'partials/form.html';

但是您说 form.html index.html 位于同一目录中。 formURL是相对于 index.html 所在目录的路径。所以

  • form.html 放入 partials 目录( angularexample / partials / form.html

  • formURL设为

    $scope.formURL= 'form.html';