我很困惑控制器何时实例化.此外,嵌套状态时控制器如何实例化.我可能会对范围如何附加到视图和控制器感到困惑,也就是说,如果每个视图都有自己的控制器和范围,或者它们共享相同的范围.
有人可以解释控制器何时实例化?在嵌套路由下,所有视图共享一个控制器和范围吗?当我切换状态并返回状态会发生另一个控制器实例化时会发生什么?
以下是我的路线(配置文件):
.config (googleAnalyticsCordovaProvider, $stateProvider, $urlRouterProvider, IdleProvider, KeepaliveProvider) ->
$stateProvider
.state('app', {
url: '/app',
abstract: true,
templateUrl: 'templates/menu.html',
controller: 'AppController'
})
.state('app.pincode', {
url: '/pincode',
views: {
menuContent: {
templateUrl: 'templates/pincode-yield.html',
controller: 'PincodeController'
}
}
})
.state('app.pincode.create', {
url: '/create',
views: {
pincode: {
templateUrl: 'templates/pincode-create.html',
controller: 'PincodeController'
}
}
})
.state('app.pincode.pincodeLogin', {
url: '/login',
views: {
pincode: {
templateUrl: 'templates/pincode-login.html',
controller: 'PincodeController'
}
}
})
.state('app.pincode.settings', {
url: '/settings',
views: {
pincode: {
templateUrl: 'templates/settings.html',
controller: 'PincodeController'
} …Run Code Online (Sandbox Code Playgroud) angularjs angularjs-scope angularjs-routing angular-ui-router
我有一个使用Ionic框架的混合应用程序构建,并希望使用量角器在模拟器上进行测试.如何设置使用量角器在模拟器上运行测试?
这是我到目前为止所尝试的:
1)我的所有测试都在浏览器中运行良好.
2)安装Appium(http://appium.io/)
3)修改了我的protractor.config.js文件:
exports.config = {
seleniumAddress: 'http://localhost:4723/wd/hub',
specs: [
'e2e/*_spec.coffee'
],
capabilities: {
browserName: '',
'appium-version': '1.3',
platformName: 'iOS',
platform: 'Mac',
platformVersion: '8.2',
deviceName: 'iPhone 5s',
app: 'absolute_path/platforms/ios/build/emulator/taco.app'
},
baseUrl: 'http://localhost:8100',
};
Run Code Online (Sandbox Code Playgroud)
这将启动模拟器,但不会运行测试.这是一个示例规范......
describe 'Taco', ->
describe 'Login', ->
beforeEach ->
browser.get('http://localhost:8100')
browser.executeScript('window.localStorage.clear();')
browser.waitForAngular()
it 'should login with valid credentials', ->
expect(element(By.css('.home-template')).isPresent()).toBe(true)
element(By.linkText('I have an account')).click()
element(By.model('credentials.email')).sendKeys('taco1@taco.com')
Run Code Online (Sandbox Code Playgroud) selenium hybrid-mobile-app appium protractor ionic-framework
为什么我收到以下错误?
nil不是与ActiveModel兼容的对象.它必须实现:to_partial_path.
我认为错误可能与我正在使用的教程有关,当我使用Rails 4时.
这是型号代码:
class DashboardsController < ApplicationController
def show
@text_shout = TextShout.new
@photo_shout = PhotoShout.new
@shouts = current_user.shouts
end
end
class PhotoShoutsController < ApplicationController
def create
content = build_content
shout = current_user.shouts.build(content: content)
if shout.save
redirect_to dashboard_path
else
flash.alert = "Could not shout."
redirect_to dashboard_path
end
end
private
def build_content
PhotoShout.new(photo_shout_parameters)
end
def photo_shout_parameters
params.require(:photo_shout).permit(:image)
end
end
Run Code Online (Sandbox Code Playgroud)
这是在_shout.html partial上发生错误的视图代码
# app/view/dashboards/show.html.erb
<%= form_for @text_shout do |form| %>
<%= form.text_field :body, placeholder: 'Shout content here' %>
<%= form.submit …Run Code Online (Sandbox Code Playgroud) 我正在尝试将Angulartics与Ionic Framework结合使用.但是,谷歌分析没有任何跟踪.这是如何设置它.
index.html.slim文件
<script src="lib/angulartics/src/angulartics.js">
<script src="lib/angulartics/src/angulartics-ga-cordova.js">
Run Code Online (Sandbox Code Playgroud)
JavaScript的:
(function(i,s,o,g,r,a,m)
{i['GoogleAnalyticsObject']=r;i[r]=i[r]||function() {
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();
a=s.createElement(o),
m=s.getElementsByTagName(o)[0];
a.async=1;
a.src=g;
m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', '#{ENV['GOOGLE_ANALYTICS_ID']', { 'cookieDomain': 'none' });`
Run Code Online (Sandbox Code Playgroud)将它添加到我的角度模块中
angular.module('app', ['angularMoment', 'angulartics', 'angulartics.google.analytics.cordova', 'ngCordova'])`
Run Code Online (Sandbox Code Playgroud)在路由中添加$ analyticsProvider到我的配置
.config ($analyticsProvider, $stateProvider, $urlRouterProvider) ->
Run Code Online (Sandbox Code Playgroud)我没有在谷歌分析仪表板上获得任何数据.有人可以解释如何在我的离子项目中安装Angulartics.
我有一个通过redux-form字段连接的FileUpload组件.在输入字段中选择文件时,它将input.onChange和input.onBlur调用所选文件作为base64字符串.
我正在使用asyncValidator redux-form选项来验证图像的尺寸,我希望在异步验证完成后将文件上传到我的服务器.
似乎没有记录任何类型的afterAsyncValidation挂钩.以redux形式实现此目的的最佳方法是什么?
我使用redux来隐藏和显示基于值的组件.
Redux表单文档提到以下内容:
应谨慎使用连接到多个字段,因为每次连接的任何字段都需要整个组件重新渲染.这可能是性能瓶颈.除非您绝对需要,否则您应该单独连接到您的字段.
我不清楚我的隐藏和显示基于单选按钮的字段的解决方案是否足够好,可以使用Fields警告谨慎使用.
您能否澄清我的组件是否值得使用Fields.如果没有,有什么替代方法可以实施?
另外,如何fields实现验证?
<div>
<form>
<Fields
component={RadioButtonGroupField}
names={['radioButtonGroup', 'nameTextField', 'nickNameTextField']}
/>
</ form>
</div>
function RadioButtonGroupField(fields) {
return(
<div>
<RadioButtonGroupComponent
{...fields.radioButtonGroup.input}
{...fields.radioButtonGroup.meta}
/>
{
(fields.radioButtonGroup.input.value === 'name' ||
fields.radioButtonGroup.input.value === 'both') &&
<NameTextFieldComponent
{...fields.radioButtonGroup.input}
{...fields.radioButtonGroup.meta}
/>
}
{
(fields.radioButtonGroup.input.value === 'nickname' ||
fields.radioButtonGroup.input.value === 'both') &&
<NicknameTextFieldComponent
{...fields.radioButtonGroup.input}
{...fields.radioButtonGroup.meta}
/>
}
</div>
);
}
Run Code Online (Sandbox Code Playgroud) 我无法从Android设备上读取www/config.xml文件.我尝试了两种不同的方法.首先,我尝试使用另一个线程中推荐的$ http服务.当这不起作用时,我尝试使用Cordova文件插件.我这样做的原因是尝试从应用程序中的www/config.xml文件中获取版本号.以下是两种方法:
1)$ http.get()
url = 'file:///android_asset/www/config.xml'
$http.get(url)
.then ((data) ->
versionNumber = data.data.match(/<widget\s.*?\sversion=['"]([^'"]+)['"]/)
verNum = versionNumber[1]
), (err) ->
# {"data": null, "status": 0, .....}
alert JSON.stringify err
Run Code Online (Sandbox Code Playgroud)
2)Cordova文件插件
if ionic.Platform.isAndroid()
path = 'file:///android_asset/www/'
file = 'config.xml'
$cordovaFile.readAsText(path, file)
.then ((data) ->
alert JSON.stringify data
return
), (error) ->
# I alert { code: 5 } which is an ENCODING_ERR
alert JSON.stringify error
Run Code Online (Sandbox Code Playgroud) 我正在使用Ionic和Phonegap构建服务.我还使用离子运行[android/ios]在开发过程中测试手机上的应用程序.我注意到phonegap和cordova的config.xml文件的名称空间xmlns是不同的.我是否需要保留两个单独的config.xml文件,一个用于www/config.xml中的phonegap,另一个用于根目录中的cordova?或者是否要整合到一个config.xml文件?
用户可以复制并粘贴到textarea html输入中,有时会粘贴无效的UTF-8字符,例如,从包含选项卡的rtf文件中进行复制和粘贴。
如何检查字符串是否为有效的UTF-8?
在不事先掌握所有指标的情况下,如何计算以下指标的总和?我可以使用聚合框架或MapReduce完成此操作吗?
[
{
player_id: '123',
timestamp: <sometime>,
metrics: {
points_per_game: 1,
rebounds_per_game: 2,
assist_per_game: 3,
}
},
{
player_id: '123',
timestamp: <sometime>,
metrics: {
points_per_game: 1,
rebounds_per_game: 2,
}
},
{
player_id: '345',
timestamp: <sometime>,
metrics: {
points_per_game: 1,
rebounds_per_game: 2,
point_in_the_paint_per_game: 2
}
}
]
Run Code Online (Sandbox Code Playgroud)
我想得到以下结果
[
{
player_id: '123',
metrics: {
points_per_game: 2,
rebounds_per_game: 4,
assist_per_game: 3,
}
},
{
player_id: '345',
metrics: {
points_per_game: 1,
rebounds_per_game: 2,
point_in_the_paint_per_game: 2
}
}
]
Run Code Online (Sandbox Code Playgroud)
我无法执行以下操作,因为这将要求我了解每个指标:
db.stats.aggregate([
{$group: {
_id: …Run Code Online (Sandbox Code Playgroud) 我发现自己将我的api调用中的所有数据都放在设备本地存储中,我不确定是否将东西放在本地存储中并将它们放入服务中是否重要.我应该何时使用设备中的本地存储与使用Angularjs服务?
什么时候控制器实例化?这是你第一次访问这个州吗?另外,当您重新访问状态时会发生什么,新控制器是否会再次实例化?
假设我有两个状态,A和B,并且我在状态B的顶部放置一个警告声明.我注意到如果从状态A转到B状态B的警告语句出现,它告诉我控制器已经实例化.但是假设我从状态A到B再到C并返回到B,警报声明不会消失.但是,如果我从状态A转到B转到C转到B转到A到B,警报声明会再次出现.
这是我路线的一部分:
州A = app.login
州B = app.pincodeCreate
州C = app.messagelist
.run ($ionicPlatform, startup) ->
$ionicPlatform.ready(startup.ionicReady)
.config (googleAnalyticsCordovaProvider, $stateProvider, $urlRouterProvider) ->
$stateProvider
.state('app', {
url: '/app',
abstract: true,
templateUrl: 'templates/menu.html',
controller: 'AppController'
})
.state('app.pincodeCreate', {
url: '/pincode',
views: {
menuContent: {
templateUrl: 'templates/pincode.html',
controller: 'PincodeController'
}
}
})
.state('app.login', {
url: '/login',
views: {
menuContent: {
templateUrl: 'templates/login.html',
controller: 'LoginController'
}
}
})
.state('app.messagelist', {
url: '/messagelist',
views: {
menuContent: {
templateUrl: 'templates/messagelist.html',
controller: 'MessageListController',
resolve: {
activities: (utils, …Run Code Online (Sandbox Code Playgroud) angularjs ×4
ionic ×4
cordova ×3
redux-form ×2
appium ×1
html ×1
javascript ×1
mongodb ×1
polymorphism ×1
protractor ×1
react-redux ×1
redux ×1
selenium ×1
utf-8 ×1