小编Rya*_*ton的帖子

可观察类型错误:无法读取未定义的属性

在我的Angular 2应用程序中,我收到一个错误:

无法读取undefined的属性'title'.

这是一个非常简单的组件,只是试图在这里工作.它击中我的API控制器(奇怪地多次),它似乎在返回一个对象后点击回调.我的console.log输出了我期望的对象.这是完整的错误:

TypeError: Cannot read property 'title' of undefined
    at AbstractChangeDetector.ChangeDetector_About_0.detectChangesInRecordsInternal (eval at <anonymous> (http://localhost:55707/lib/angular2/bundles/angular2.dev.js:10897:14), <anonymous>:31:26)
    at AbstractChangeDetector.detectChangesInRecords (http://localhost:55707/lib/angular2/bundles/angular2.dev.js:8824:14)
    at AbstractChangeDetector.runDetectChanges (http://localhost:55707/lib/angular2/bundles/angular2.dev.js:8807:12)
    at AbstractChangeDetector._detectChangesInViewChildren (http://localhost:55707/lib/angular2/bundles/angular2.dev.js:8877:14)
    at AbstractChangeDetector.runDetectChanges (http://localhost:55707/lib/angular2/bundles/angular2.dev.js:8811:12)
    at AbstractChangeDetector._detectChangesContentChildren (http://localhost:55707/lib/angular2/bundles/angular2.dev.js:8871:14)
    at AbstractChangeDetector.runDetectChanges (http://localhost:55707/lib/angular2/bundles/angular2.dev.js:8808:12)
    at AbstractChangeDetector._detectChangesInViewChildren (http://localhost:55707/lib/angular2/bundles/angular2.dev.js:8877:14)
    at AbstractChangeDetector.runDetectChanges (http://localhost:55707/lib/angular2/bundles/angular2.dev.js:8811:12)
    at AbstractChangeDetector.detectChanges (http://localhost:55707/lib/angular2/bundles/angular2.dev.js:8796:12)
Run Code Online (Sandbox Code Playgroud)

该服务(about.service.ts):

import {Http} from 'angular2/http';
import {Injectable} from 'angular2/core';
import {AboutModel} from './about.model';
import 'rxjs/add/operator/map';

@Injectable()
export class AboutService {
    constructor(private _http: Http) { }

    get() {
        return this._http.get('/api/about').map(res => {
            console.log(res.json()); // I get …
Run Code Online (Sandbox Code Playgroud)

observable rxjs angular

44
推荐指数
3
解决办法
8万
查看次数

$ window.location.origin在使用IE时给出了错误的值

$window.location.origin 在IE上返回错误的值.

origin属性返回URL的协议,主机名和端口号.

url:http:// localhost:8080/products/search

Chrome: $window.location.origin返回http:// localhost:8080

IE: $window.location.origin返回http:// localhost:8080/products/search

我怎样才能在IE上获得正确的价值?

javascript internet-explorer

42
推荐指数
2
解决办法
3万
查看次数

如何在Code First Drop-Create模式下使用Entity Framework?

我正在使用Entity Framework v4.我遵循了书呆子晚餐教程中的说明.我目前处于开发模式(未发布到任何更高的环境),并希望在每个新部署上重新创建表,因为模型仍然具有高度不稳定性,而且我不关心保留数据.但是,这不会发生.不会创建/修改表,也不会发生数据库中发生的任何事情.如果我使用程序包管理器命令移动到迁移模型:enable-migrations,add-migration(initial),这将起作用并使用我的迁移.但是,由于我还不想进行粒度迁移并且只想要我的初始创建脚本,因此我不得不每次都删除迁移文件夹,重做命令(enable-migrations,add-migration)并手动删除数据库我改变了什么.

如何首先获得代码的放置/创建行为?

entity-framework code-first

34
推荐指数
1
解决办法
5万
查看次数

Razor Host Factory错误

尝试运行我的应用程序时出现MvcWebRazorHostFactory错误,但它根本不是MVC应用程序.我通过nuget安装了以下Web包:

Microsoft ASP.NET Razor
Microsoft ASP.NET Web API 2.1
Microsoft ASP.NET Web Pages
Run Code Online (Sandbox Code Playgroud)

我的应用程序是angularjs前端使用剃刀视图(.cshtml).我不明白为什么我一直收到这个错误.

An exception of type 'System.InvalidOperationException' occurred in System.Web.WebPages.Razor.dll but was not handled in user code

Additional information: Could not locate Razor Host Factory type: System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35
Run Code Online (Sandbox Code Playgroud)

这是我的web.config中的剃刀部分:

<system.web.webPages.razor>
<host factoryType="System.Web.WebPages.Razor.WebRazorHostFactory, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="System.Web.WebPages.WebPage">
  <namespaces>
    <add namespace="System.Web.Configuration" />
    <add namespace="System.Web.Optimization" />
    <add namespace="System.Web.Routing" />
  </namespaces>
</pages>
Run Code Online (Sandbox Code Playgroud)

asp.net asp.net-mvc razor asp.net-webpages

30
推荐指数
3
解决办法
2万
查看次数

使用带有指令的ControllerAs

我试图在这里遵循John Papa的angularJS风格指南,并开始将我的指令转换为使用controllerAs.但是,这不起作用.我的模板似乎无法访问分配给vm的任何内容.看到展示行为的这个非常简单的plnkr示例.

http://plnkr.co/edit/bVl1TcxlZLZ7oPCbk8sk?p=preview

angular
    .module('app', []);

angular
    .module('app')
    .directive('test', test);

function test() {
    return {
        restrict: 'E',
        template: '<button ng-click="click">{{text}}</button>',
        controller: testCtrl,
        controllerAs: 'vm'
    }
}

angular
    .module('app')
    .controller('testCtrl', testCtrl);

function testCtrl() {
  var vm = this;
  vm.text = "TEST";
}
Run Code Online (Sandbox Code Playgroud)

angularjs angularjs-directive angularjs-controlleras

26
推荐指数
1
解决办法
3万
查看次数

Karma Webpack源图无效

我正在使用Karma-Webpack来运行我的Angular 2规范.

https://github.com/webpack/karma-webpack

当我在Chrome中使用karma执行测试时,我的规范的源文件在调试器中看起来是可读的.但是,受测试的系统文件(我的应用程序源)是不可读的.

我正在使用karma-sourcemap-loader并按照指示将devtool设置为'inline-source-map'.什么可能导致这个问题?

此构建模仿AngularClass angular2-webpack-starter之后的模型. https://github.com/AngularClass/angular2-webpack-starter

调试器中的Spec文件:

在此输入图像描述

调试器中的SUT文件:

在此输入图像描述

webpack.test.js

const helpers = require('./helpers');

/**
 * Webpack Plugins
 */
const ProvidePlugin = require('webpack/lib/ProvidePlugin');
const DefinePlugin = require('webpack/lib/DefinePlugin');

/**
 * Webpack Constants
 */
const ENV = process.env.ENV = process.env.NODE_ENV = 'test';

/**
 * Webpack configuration
 *
 * See: http://webpack.github.io/docs/configuration.html#cli
 */
module.exports = {

  /**
   * Source map for Karma from the help of karma-sourcemap-loader &  karma-webpack
   *
   * Do not change, leave as is or it wont work.
   * See: …
Run Code Online (Sandbox Code Playgroud)

javascript webpack karma-webpack angular

22
推荐指数
2
解决办法
9770
查看次数

AngularJS控制器函数从未调用过

我的angularjs控制器函数永远不会被调用.我看到我的源中包含的所有js文件,它只是没有达到我的控制器的初始化.这段代码有什么问题?

eventListCtrl.js:

eventsApp.controller('eventListCtrl', ['$scope', function ($scope) {
    // this code is never called
    alert('controller initializing');
    $scope.name = "Test";
}]);
Run Code Online (Sandbox Code Playgroud)

app.js:

'use strict';

var eventsApp = angular.module('eventsApp', []);
Run Code Online (Sandbox Code Playgroud)

Index.cshtml:

<div ng-controller="eventListCtrl">
    <div class="row">
        <div class="spann11">
            <h2>{{name}}</h2>
        </div>
    </div>
</div>

<script src="/scripts/vendor/angular.js"></script>
<script src="/scripts/app.js"></script>
<script src="/scripts/controllers/eventListCtrl.js"></script>
Run Code Online (Sandbox Code Playgroud)

javascript angularjs

21
推荐指数
1
解决办法
2万
查看次数

角度2柔性布局高度100%

使用Material设计和flex-layout的Angular app. https://github.com/angular/flex-layout

我正在尝试在顶部创建一个2列的简单页面布局(左=填充,右= 10%),然后在屏幕底部创建一行.元素仍然只填充内容所需的垂直空间.我发现这样做的唯一方法是手动将高度设置为100%.这是我必须这样做的吗?这个HTML有什么问题?

<div fxLayout="column">
  <div fxLayout="row" fxFlex="90%">
    <div fxFlex="80%" class="border">
      <p>Stuff is happening here</p>
    </div>
    <div fxFlex="20%" class="border">
      <ul>
        <li>Item 1</li>
        <li>Item 2</li>
      </ul>
    </div>
  </div>
  <div fxLayout="row" fxFlex="10%" class="border">
    <p>Bottom element</p>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

结果:

在此输入图像描述

flexbox material-design angular

14
推荐指数
3
解决办法
1万
查看次数

Typescript构建从node_modules文件夹获取错误

我正在运行typescript构建并在node_modules中获取错误.为什么不忽略这个文件夹?我在tsconfig.json的exclude部分中有它.真正奇怪的是我有另一个项目,我已经完成了文件比较,即使gulpfile.js,tsconfig.json和node_modules文件夹相同,它也不会抛出这些错误.我还能检查什么?

错误:

c:/Dev/streak-maker/node_modules/angular2/src/core/change_detection/parser/locals.d.ts(3,14): error TS2304: Cannot find name 'Map'.
c:/Dev/streak-maker/node_modules/angular2/src/core/change_detection/parser/locals.d.ts(4,42): error TS2304: Cannot find name 'Map'.
c:/Dev/streak-maker/node_modules/angular2/src/core/debug/debug_node.d.ts(14,13): error TS2304: Cannot find name 'Map'.
c:/Dev/streak-maker/node_modules/angular2/src/core/debug/debug_node.d.ts(24,17): error TS2304: Cannot find name 'Map'.
c:/Dev/streak-maker/node_modules/angular2/src/core/debug/debug_node.d.ts(25,17): error TS2304: Cannot find name 'Map'.
c:/Dev/streak-maker/node_modules/angular2/src/core/di/provider.d.ts(436,103): error TS2304: Cannot find name 'Map'.
c:/Dev/streak-maker/node_modules/angular2/src/core/di/provider.d.ts(436,135): error TS2304: Cannot find name 'Map'.
c:/Dev/streak-maker/node_modules/angular2/src/core/render/api.d.ts(13,13): error TS2304: Cannot find name 'Map'.
c:/Dev/streak-maker/node_modules/angular2/src/core/render/api.d.ts(14,84): error TS2304: Cannot find name 'Map'.
c:/Dev/streak-maker/node_modules/angular2/src/facade/collection.d.ts(1,25): error TS2304: Cannot find name 'MapConstructor'.
c:/Dev/streak-maker/node_modules/angular2/src/facade/collection.d.ts(2,25): error TS2304: Cannot find name 'SetConstructor'.
c:/Dev/streak-maker/node_modules/angular2/src/facade/collection.d.ts(4,27): …
Run Code Online (Sandbox Code Playgroud)

npm typescript tsc gulp gulp-typescript

13
推荐指数
3
解决办法
3万
查看次数

如何在ng-options中的项目标签上使用angularJs过滤器

给定一个加载了产品选项的选择列表,我希望标签采用选项名称的格式,然后在括号中定价.例如:"产品选项B($ 1,432.12)".我的选项对象具有"名称"和"价格"属性.价格是数字,我想用货币过滤器格式化.我该怎么做?我想也许是一个带字符串和数值的自定义过滤器.只是不确定我如何能够在ng-options中应用过滤器.

以下代码只显示名称(不是价格):

<select class="form-control"
        ng-model="selectedOption"
        ng-options="option.name for option in category.options"></select> 
Run Code Online (Sandbox Code Playgroud)

angularjs ng-options angularjs-ng-options

12
推荐指数
1
解决办法
7891
查看次数